C# While birden fazla değer üretme

ozgurgorgulu

Hectopat
Katılım
9 Haziran 2014
Mesajlar
310
Makaleler
2
Merhabalar.
while(RastgeleOlay == 0){
OlayUret();
Altin--;
}
butona basılınca bu kodu çalıştırıyorum. RastgeleOlay 0'dan farklı olduğu sürece whileın yapısı gereğince
OlayUret();
Altin--;
kodları çalışıyor. Üretilen sayılar 0-3 arasında. While her seferinde çalıştığı için OlayUret();Altin--; kodları birden fazla çalışıyor. Bunu nasıl çözebilirim? Hangi mantık ile yapabilirim?
 
While her seferinde çalıştığı için OlayUret();Altin--; kodları birden fazla çalışıyor.
While bloğu içinde "RastgeleOlay" değişkenini sıfırdan farklı yapmalısınız ki while bloğundan çıkabilsin. Bunu yapabilecek tek aday var o da "OlayUret()" metodu. Sadece button altı kodu değil de "OlayUret()" metodunun içeriğini de paylaşırsanız daha iyi olacak.

Bir de gerçekten "OlayUret(); Altin--;" kodlarının birden fazla çalışmasına ihtiyacınız var mı? Eğer ihtiyaç yoksa while'ı kaldırın gitsin.

Örnek kod paylaşıyorum. Belki çözüm olur.

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {      
        /*
         OlayUret metodunun parametresi için "ref" anahtar kelimesini kullanmazsak 
          metot çıkışında RastgeleOlay değişkenine atanan yeni değer unutulur. 
          Bu nedenle yeni atanan RastgeleOlay değerinin unutulmaması için "ref" anahtar kelimesini kullandık. 
        */
        static void OlayUret(ref int RastgeleOlay)
        {
           Random r=new Random();
           RastgeleOlay =r.Next(4);
        }

        static void Main(string[] args)
        {
            //RastgeleOlay 0 olmalı yoksa while bloğuna giremeyiz. 
            int RastgeleOlay = 0;

            int Altin = 10;

            while (RastgeleOlay == 0)
            {                
                OlayUret(ref RastgeleOlay);
                Altin--;
                Console.WriteLine("Altın : "+Altin+" , RastgeleOlay : "+RastgeleOlay);
            }

            Console.ReadKey();

        }




    }
}
 
Uyarı! Bu konu 9 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı