Şimdi Ara

C# ile ilgili karşılaştığım bir problem (başlangıç aşamasındayım öğrenmede)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
574
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar ben programlamaya tarih olarak eskiden olsa da ayırdığım süre olarak yeni başlamış biriyim. Oyun yapımcısı olmaya karar verdim ve C# öğrenmeye başladım, haliyle çok fazla bilmediğim şey çıkıyor şu anda da bir problem ile karşı karşıyayım. Şöyle ki:

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

    namespace BasicGame
    {
    class Program
    {
    static public void Asking(string valueType)
    {
    string answer;
    string value;

    Console.Write("Please enter your " + valueType + ": ");
    value = Console.ReadLine();

    Start:
    Console.WriteLine("Your " + valueType + " is " + value + ". Do you wish to change your " + valueType + "?");
    answer = Console.ReadLine().ToLower();
    if (answer == "yes")
    {
    Console.Write("Please write your new " + valueType + ": ");
    value = Console.ReadLine();
    Console.WriteLine("Your " + valueType + " has changed to " + value + ".");
    goto Start;
    }
    else if (answer == "no")
    {
    }
    else
    {
    Console.WriteLine("Please answer by typing yes or no.");
    goto Start;
    }

    }

    static void Main(string[] args)
    {

    Asking("name");
    Asking("age");
    Console.ReadKey();

    }
    }
    }


    Gördüğünüz kodda amacım her seferinde soru sorma kodlarını defalarca yazacağıma bir method ile işimi kolaylaştırmaktı ilk defa bu tarz bir şeyi tamamen kendim düşünüp yaptığım için çok sevinmiştim ama sonra bazı problemler olduğunu fark ettim:
    1. Bir kere Asking methodundaki value değerini Main methodumda kullanamıyorum çünkü o orada tanımlı.
    2. Zaten o değeri alabilmiş olsam da en son age'i tanımladığım için sadece yaş verisini kullanabilicem.
    Buradaki 2. probleme çok güzel bir çözüm getirmiş olsam da en son şöyle bir hal aldı kod:

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

    namespace BasicGame
    {
    class Program
    {
    int x = 0;
    string[] values = new string[2];

    static public void Asking(string valueType)
    {
    string answer;
    Program a = new Program();

    Console.Write("Please enter your " + valueType + ": ");
    a.values[a.x] = Console.ReadLine();

    Start:
    Console.WriteLine("Your " + valueType + " is " + a.values[a.x] + ". Do you wish to change your " + valueType + "?");
    answer = Console.ReadLine().ToLower();
    if (answer == "yes")
    {
    Console.Write("Please write your new " + valueType + ": ");
    a.values[a.x] = Console.ReadLine();
    Console.WriteLine("Your " + valueType + " has changed to " + a.values[a.x] + ".");
    goto Start;
    }
    else if (answer == "no")
    {
    }
    else
    {
    Console.WriteLine("Please answer by typing yes or no.");
    goto Start;
    }

    }

    static void Main(string[] args)
    {
    Program a = new Program();
    Asking("name");
    a.x++;
    Asking("age");

    Console.WriteLine(a.values[0] + a.values[1]);
    Console.ReadKey();

    }
    }
    }


    Şimdi problem şu ki ikisinde de kullanabilmek için değeri methodların dışında tanımlasam bile bir methodun içinde yaptığım değişiklik yine de methodun dışındakileri etkilemiyor. Ben bu Asking methodunu çalıştırdıktan sonra isim ve yaş değerlerini ayrı ayrı elde edip kullanabilmek için ne yapabilirim?
    Mesela şunu da denedim Asking methodunu return type yaptım Console.WriteLine(Asking("name")) şeklinde kullanmayı denedim bu sefer de her bu şekilde name değerini çağırmaya kalkıştığımda baştan bütün methodu çalıştırıyor yani bir anlamı kalmıyor. İlginiz için teşekkürler.



    < Bu mesaj bu kişi tarafından değiştirildi gizemliduellocu -- 26 Ekim 2015; 16:34:00 >







  • kodlarını düzenledim çalışıyor. goto kullanmamaya çalış eskilerde kalmış bir ifade bu. iyi kodlamalar...

    namespace ConsoleApplication1 
    {
    class Program
    {
    static string ad,yas;
    static int i=1;

    static void Asking(string valueType)
    {
    string answer, value; ;

    Console.Write("Please enter your " + valueType + ": ");
    value = Console.ReadLine();

    Console.WriteLine("Your " + valueType + " is " + value + ". Do you wish to change your " + valueType + "?");
    answer = Console.ReadLine().ToLower();
    if (answer == "yes")
    {
    Console.Write("Please write your new " + valueType + ": ");
    value = Console.ReadLine();
    Console.WriteLine("Your " + valueType + " has changed to " + value + ".");
    }

    if(i==1) ad=value;
    else yas=value;

    i++;

    }

    static void Main(string[] args)
    {
    Asking("name");
    Asking("age");
    Console.WriteLine("{0} {1}",ad,yas);
    Console.ReadKey();
    }
    }
    }




  • quote:

    Orijinalden alıntı: coolasicebu

    kodlarını düzenledim çalışıyor. goto kullanmamaya çalış eskilerde kalmış bir ifade bu. iyi kodlamalar...

    namespace ConsoleApplication1 
    {
    class Program
    {
    static string ad,yas;
    static int i=1;

    static void Asking(string valueType)
    {
    string answer, value; ;

    Console.Write("Please enter your " + valueType + ": ");
    value = Console.ReadLine();

    Console.WriteLine("Your " + valueType + " is " + value + ". Do you wish to change your " + valueType + "?");
    answer = Console.ReadLine().ToLower();
    if (answer == "yes")
    {
    Console.Write("Please write your new " + valueType + ": ");
    value = Console.ReadLine();
    Console.WriteLine("Your " + valueType + " has changed to " + value + ".");
    }

    if(i==1) ad=value;
    else yas=value;

    i++;

    }

    static void Main(string[] args)
    {
    Asking("name");
    Asking("age");
    Console.WriteLine("{0} {1}",ad,yas);
    Console.ReadKey();
    }
    }
    }



    Heyt gidi anilar. BASICte ha bire goto kullanirdim. Demek halen var. Ee tabi o zaman oop yok biz de kod bloklarina goto ile gidiyoruz.

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • coolasicebu C kullanıcısına yanıt
    Çok teşekkürler hocam demek ki çözüm o variableları static yapmaktaymış.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.