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.

Geri
Yukarı