fearlesshackteam Posted December 22, 2009 Share Posted December 22, 2009 Arkadaşlar yarın için bir ödevim var. C# da Case yapısı ile textboxa girilen karakterin ne olduğunu bulmam gerekiyor. Ben kodları yazdım ama anlayamadım hata nerde. İf ile sorunsuz çalışırken Case ile hata veriyor. Nerde hata var yardımcı olurmusunuz ? int a; char karakter; a = Convert.ToInt32(textBox1.Text); karakter = e.KeyChar; switch (a) { case (karakter >= (char)48) || (karakter <= (char)57): MessageBox.Show("Bir sayı girdiniz"); break; case (karakter >= (char)65) || (karakter <= (char)90): MessageBox.Show("Büyük harf girdiniz"); break; case (karakter >= (char)97) || (karakter <= (char)122): MessageBox.Show("Küçük harf girdiniz"); break; default: MessageBox.Show("Bir özel karaktere bastınız"); break; }[/CODE] Link to comment Share on other sites More sharing options...
fearlesshackteam Posted December 22, 2009 Author Share Posted December 22, 2009 Arkadaşlar yardım edebilecek yok mu ? Hala sorunu bulamadım nerde. Değişkeni farklı biçimde tanımlıyorum yine aynı hatayı alıyorum. Link to comment Share on other sites More sharing options...
realceday Posted December 22, 2009 Share Posted December 22, 2009 case yapısı bu şekilde kullanılamaz switch a dediğinde a nın alacağı herhangi bir değeri yazmak zorundasın. karakteri kullanamazsın Ayrıca burada harf girişi yapıldığında programın hta verirdi. Link to comment Share on other sites More sharing options...
fearlesshackteam Posted December 22, 2009 Author Share Posted December 22, 2009 Peki nereyeyi düzenlemem lazım ? Siz nasılk yaptınız ki harf hatasını gördünüz ? Bilgi verebilirmisiniz ? Link to comment Share on other sites More sharing options...
CuMHuR01 Posted December 22, 2009 Share Posted December 22, 2009 case yapısında bir aralık belirtemezsin, direk bir seçim yaptırırsın.. Konsol ekranında notlarımdan bir örnek veirm.. - - - - - - - - - - - - namespace IlkProgram { class Program { static void Main() { Console.WriteLine("########OTOMASYON########\n\n"); Console.WriteLine("1-Kayit Ekleme"); Console.WriteLine("2-Kayit Sil"); Console.WriteLine("3-Kayit Güncelle"); Console.WriteLine("4-Kayit Ara"); Console.WriteLine("5-Programdan Cik"); Console.WriteLine("\n\nBir secim yapin"); int secim; secim = Convert.ToInt32(Console.ReadLine()); switch (secim) { case 1: Console.WriteLine("Kayit Ekleme islemini sectiniz"); break; case 2: Console.WriteLine("Kayit Silme islemini sectiniz"); break; case 3: Console.WriteLine("Kayit Guncelleme islemini sectiniz"); break; case 4: Console.WriteLine("Kayit Arama islemini sectiniz"); break; case 5: Console.WriteLine("Programdan cikiyorsunuz..."); break; default: Console.WriteLine("Lutfen gecerli bir deger giriniz"); break; } } } } Link to comment Share on other sites More sharing options...
realceday Posted December 22, 2009 Share Posted December 22, 2009 Case ile yapmam mümkün değil. Case metodunda belirli bir aralık veremezsin. Sadece bir değerle karşılaştırırsın Bu değer bu değer arasında olsun diyemezsin. Ya hepsini tek tek yazacaksın ya da en mantıklısı if deyimini kullanacaksın. Ha bir de aralık belirtirken de || yerine && kullanmalısın. Link to comment Share on other sites More sharing options...
WARDOG Posted December 22, 2009 Share Posted December 22, 2009 ben anlamam ama dediği a harfini ben bile gördüm. switch(a) yazan yerde a harfi yerine rakam yaz diyor. yanlış deilse:) Link to comment Share on other sites More sharing options...
fearlesshackteam Posted December 22, 2009 Author Share Posted December 22, 2009 Arkadaşlar bunu geçen hafta if ile yapmamı istemişti öğretmen. İf ile yaptım çalıştı ama case yapısını c# da ilk kez kullanıyorum ve konu ile ilgili pek bilgim yok. Bu nedenle hata olasılığı çok yüksek. Orayı neden öyle yaptın derseniz mantıklı bir cevap veremem size. Yapmam gereken klavyeden girilen herhangi bir tuşun değerini alıp hangi tuş olduğunu messagebox ile bildirmek. Bunun case ile başka bir yapılış şekli var mı ? Link to comment Share on other sites More sharing options...
CuMHuR01 Posted December 22, 2009 Share Posted December 22, 2009 for döngüsü ile bütün karekterleri sıralatıp, if ile sorgusunu yapıp, case ile seçim yapman gerekir dediğin işlemde ve buda o oo ooo yada bütün karekterleri case'e direk yazcan bu çok daha uzun sürer.. Link to comment Share on other sites More sharing options...
fearlesshackteam Posted December 22, 2009 Author Share Posted December 22, 2009 For döngüsüyle sıralatıp demişsiniz de for ile case i nasıl birleştirecem ve ben karakterlerin ascii değerlerini nasıl sıralatacam onu anlamadım. Bişeyler denedim ama saçma oldu. Sürekli yazıyorum siliyorum bişeye karar veremdim. Link to comment Share on other sites More sharing options...
blackman12 Posted December 22, 2009 Share Posted December 22, 2009 while ve if ile yaparsan mantıklı olur. case yaparsan switch a dan sonra case a demen gerekir. ondan sonra for döngüsüne sokucaksın char(xx) bölümünü oradan if e geçiceksin i = xx sonrada vermesini istediğin uyarıları verdirebilirsin. Yada for döngüsünü direk atlıcaksın vereceğin değerler belliyse direk if biparametre = sayı şeklinde devam ediceksin ama dediğimki çok mantıksız olur bu yol.Case i daha çok elementler için kullanmalısın Link to comment Share on other sites More sharing options...
by_derkan Posted December 23, 2009 Share Posted December 23, 2009 bunu if ile yapmak daha pratik. case ile yapılmaz. private void button1_Click(object sender, EventArgs e) { char a = Convert.ToChar(textBox1.Text); // textBox1 e max 1 karakter girilmeli yoksa hata verir int sayi = Convert.ToInt32(a); // karakteri ascii koduna ye çeviriyor if (sayi >= 48 && sayi <= 57) { MessageBox.Show("Bir sayı girdiniz"); } else if (sayi >= 65 && sayi <= 90) { MessageBox.Show("Büyük harf girdiniz"); } else if (sayi >= 97 && sayi <= 122) { MessageBox.Show("Küçük harf girdiniz"); } else { MessageBox.Show("Bir özel karaktere bastınız"); } } Link to comment Share on other sites More sharing options...
SecondLife Posted December 23, 2009 Share Posted December 23, 2009 Bir den Fazla Şekli var 1 ) int x; MessageBox.Show(x.GetType()); MessageBox.Show(typeof(int)); MessageBox.Show(x.GetType().Name); 2) if char in ['0'..'9'] then MessageBox.Show("Bir sayı girdiniz"); else if char in ['A'..'Z'] then MessageBox.Show("Büyük harf girdiniz"); else if char in ['a'..'z'] then MessageBox.Show("Küçük harf girdiniz"); else MessageBox.Show("Bir özel karaktere bastınız"); v.b. Link to comment Share on other sites More sharing options...
fearlesshackteam Posted December 23, 2009 Author Share Posted December 23, 2009 Arkadaşlar çok teşekkürler ilgilendiğiniz için ama ben if ile yaptım onda sorun yok. Bu hafta sadece case ile yapmamızı istedi. Ben hala çözmüş değilim. Sadece case ile bir sonuç alamıyorum. Araya başka döngü girmeden yapılması mümkün değil mi ? Döngü dışında başka bir yolu yok mu case ile birlikte yapmanın ? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.