C#'da Sayının Kaç Basamaklı Olduğunu Yazdırma

burak125

Hectopat
Katılım
28 Ocak 2014
Mesajlar
54
Yer
İstanbul, Turkey
Daha fazla  
Cinsiyet
Erkek
Meslek
ÖĞRENCİ
Merhaba arkadaşlar,
Kod:
int sayi = int.Parse(textBox1.Text);
            int uzunluk = 0;

            label1.Text = sayi.ToString();

            while (sayi > 0)
            {
                uzunluk++;
                sayi = sayi / 10;
            };

            label2.Text = uzunluk.ToString();
veya
Kod:
   int sayi1 = Convert.ToInt32(textBox1.Text);                int basamak = 0;

                while (sayi1 > 0)
                {
                    basamak++;
                    sayi1 /= 10;
                }
                label1.Text = basamak.ToString();
            }
olarak kodlarımızı yazdığımızda şöyle bir sıkıntı ortaya çıkıyor: textBox'a 0000 yazdığımızda basamak sayısı 0 basamaklıdır olarak gösteriyor. Benim istediğim 0000 yazdığımda 4 basamaklıdır yazması.
Şimdiden herkese teşekkürler.
 
Son düzenleyen: Moderatör:
Kod:
  private void textBox1_TextChanged(object sender, EventArgs e)
  {
  int sayi;

  if (int.TryParse(textBox1.Text, out sayi))//Geçerli bir sayı mevcut ise
  {
  int basamakSayisi = sayi.ToString().Length;
  label1.Text = sayi + " sayısı " + basamakSayisi + " basamaklıdır";
  label1.ForeColor = Color.Green;
  }
  else//Eğer sayı hatalı ise tryparse metodu false döndüreceğinden else çalısır ve hata mesajını kullanıcıya gösteririz
  {
  label1.Text = "Sayı hatalı";
  label1.ForeColor = Color.Red;
  }
 
  }
0000 sayısı için 4 basamaklı demesi doğru olmaz çünkü @cengizhanhck nın da dediği gibi bir basamaklıdır.

Son olarak ilk paylaştığınız kodda neden "0 basamaklı" mesajı veriyor?
Textboxa "0000" yazdığınızda int.Parse metodundan sayı=0 olur fakat "while(sayi>0)" şartı doğru olmayacağından kod while bloğuna hiç giremez. Bu yüzden de uzunluk hiç arttırılamadan hep 0 olarak kalır.
 
Eğer yine de 0000 yazınca 4 basamaklı yazmasını istiyorsanız şunu deneyin;

Kod:
 private void btnBasamak_Click(object sender, RoutedEventArgs e)
        {
            int sayı = int.Parse(txet1.Text);
            int basamak = txet1.Text.Length;

            MessageBox.Show("Girdiğiniz sayı " +  basamak.ToString() + " basamak ");
        }
 
Son düzenleme:
Merhaba arkadaşlar,
Kod:
int sayi = int.Parse(textBox1.Text);
            int uzunluk = 0;

            label1.Text = sayi.ToString();

            while (sayi > 0)
            {
                uzunluk++;
                sayi = sayi / 10;
            };

            label2.Text = uzunluk.ToString();
veya
Kod:
   int sayi1 = Convert.ToInt32(textBox1.Text);                int basamak = 0;

                while (sayi1 > 0)
                {
                    basamak++;
                    sayi1 /= 10;
                }
                label1.Text = basamak.ToString();
            }
olarak kodlarımızı yazdığımızda şöyle bir sıkıntı ortaya çıkıyor: textBox'a 0000 yazdığımızda basamak sayısı 0 basamaklıdır olarak gösteriyor. Benim istediğim 0000 yazdığımda 4 basamaklıdır yazması.
Şimdiden herkese teşekkürler.
Kod:
int ch = textBox1.Text.Length;
while (ch != 0) { MessageBox.Show(ch.ToString() + " basamaklıdır.."); break; }
if (ch == 0) MessageBox.Show("sayı giriniz..");
 
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.

Yeni konular

Geri
Yukarı