Java Mini Proje 001 - Bir Sayının Basamak Sayısını Bulma


    Bu projede verilen sayının basamak sayısını bulmayı deneyeceğiz.Öncelikle işin mantığını çözüp sonra programlama aşamasına geçmek her zaman daha iyidir.

    Bir sayınının basamak sayısını gerçek hayatta rakamları sayarak yaparız.Peki bunu bilgisayara nasıl yaptırabiliriz ?

    Basamak sayısı bulunmasını istediğimiz sayıyı 10'a bölsek en sağdan bir basamak atmış olmaz mıyız ?
Her 10'a bölüşümüzde de saydığımız basamak sayısını 1 arttırsak o zamana kadar saydığımız basamak sayısını elde ederiz.Sayıyı 10'a böldükten sonra geride kalan sayı için aynı işlemleri uygulasak sonucumuz doğru çıkacaktır.

Peki ne zamana kadar 10'a bölmeliyiz ?
Tabiki de sayının 10'a bölümü 1 veya 1'den büyük olduğu sürece bölmeliyiz. 10/10 = 1'dir. demek ki sayılacak 1 basamak daha var.

Peki sayının 10'e bölümü 1'den küçük olunca ne olmuş oluyor ?
Düşünün işlemleri yaptınız,yaptınız.Artık elinizde 9 kaldı.
9/10 = 0 (integer değerde virgülden sonrası dikkate alınmadığından).Artık 10'a bölme işlemi yapamıyoruz.
Ama elimizde tek basamaklı bir sayı kaldı.Bunun için de yani elimizde tek basamaklı bir sayı kalınca da while döngüsünün dışında onun için basamakSayisini 1 arttırır ve projemizi tamamlamış oluruz.

İşte bu anlatılanlar kapsamında aşağıdaki projemiz olmuş oldu.

Main.java
package test;

public class Main {

 public static void main(String[] args) {

  System.out.println("0\t->\t" + basamakSayisiBul(0));
  System.out.println("1\t->\t" + basamakSayisiBul(1));
  System.out.println("12\t->\t" + basamakSayisiBul(12));
  System.out.println("123\t->\t" + basamakSayisiBul(123));
  System.out.println("1234\t->\t" + basamakSayisiBul(1234));
  System.out.println("12345\t->\t" + basamakSayisiBul(12345));

 }

 public static int basamakSayisiBul(int sayi) {
  int basamakSayisi = 0;
  while (sayi / 10 >= 1) {
   sayi = sayi / 10;
   basamakSayisi++;
  }
  basamakSayisi++;
  return basamakSayisi;
 }
}


Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)