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 10 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ı