Jump to content

C# Da Case Yapısı Ile Ilgili Bir Sorunum Var.


fearlesshackteam

Recommended Posts

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

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

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

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

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

bunu if ile yapmak daha pratik. case ile yapılmaz. :p

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

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

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

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...