Skip to main content

Java Programlama : Sayıdaki En Büyük Rakamın Kaç Defa Geçtiğini Bulma

Bugün Java için kullandığım kaynakların bir tanesinde karşımda çıkan bir  problemin çözümünü buradan paylaşmak istiyorum.  Soru tam olarak şu şekilde  :

 

Kullanıcı klavyeden bir sayı girecek , bu  girilen sayıdaki en büyük rakamı , ve bu en büyük rakamın girilen sayıda kaç defa geçtiğini bulan programı yazacağız.  Kitap bu tip problemleri sınıflandırmış. Sorulara 1,2 ve 3 yıldız şeklinde numaralar vermiş. 1 yıldızlık sorular basit, 2 yıldızlık orta seviye , 3 yıldızlık sorular ise daha çok düşünmeye sevk edici sorulardan oluşuyor. Görüldüğü üzere yazar bu soruya 2 yıldız vermiş ve çözülmeye değer bir soru olarak öngörmüş.

Bu sorunun mutlaka birden fazla çözümü olabilir, ben  çözümümü bu şekilde oluşturdum. MaxBul isimli bir sınıf oluşturdum. Bu sınıfın  maxBul ve  kactaneVar isimli iki static üyesi var. maxBul ( kücük harfle yazılan) isimli metod kullanıcının girdiği sayıda ki en büyük  rakamı bulur.  kactaneVar isimli metod ise bulunan  rakamın belirtilen rakamın o sayıda kaç tane olup olmadığını kullanıcıya mesaj eder.

Kullanıcının aşağıdaki sayıyı girdiğini varsayalım :

Lütfen bir sayı giriniz :  1245801989

Kullanıcı yukarıdaki gibi bir giriş yaptığında porgramın çıktısı şu şekilde olacaktır.

Sayıdaki En büyük Rakam : 9

En Büyük Rakam Sayıda  2 defa geçmiştir

Program ile gerekli açıklamalar kodun içersine açıklama satırı olarak yazılmıştır.

 

 

 
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package maxbul;
 
import javax.swing.JOptionPane; 
 
/**
 *
 * @author Aytaç CİCİ 
 * 25 Eylül 2012 tarihinde yazılmıştır. 
 */
public class MaxBul {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
 
      String girilen = JOptionPane.showInputDialog("Lütfen Sayi Giriniz : ");
      // Kullanıcıdan sayı girişi alındı.
      maxBul(girilen);
      // girilen Sayıyı maxBul isimli metoda gönderiyoruz.
 
    }
 
    public static void  maxBul(String girilen){
        int []  sayim =  new int[girilen.length()];
        // bir integer dizisi oluşturduk  ve bu integer dizisinin eleman sayısı
        // bizim girilen sayımızın karakter sayısına bagli . Örneğin 12345 girersek
        // oluşturulacak olan dizi 5 elemanlık bir dizi olacak.
        int i,j;
        for(i=0; i<=girilen.length()-1; i++){
            // Program gelen sayıyı bir String dizisi olarak ele alıyor. Bizde 
            // bu dizinin her elamanını yeni dizimize atiyoruz.
 
            sayim[i] = girilen.charAt(i);
            // sayim dizinin i. elemanı girilen dizinin i. elemanına eşit
            // burada dikkat edilen nokta  sayının kendisi değil , asci kodu 
            // sayim[i] oluyor. Örneğin 1 sayısının asci kodu 49 dur.  12345 
            // sayisi için sayim  dizininin ilk elamanı 49 oluyor. cünkü birin
            // asci kodu  49.
        }
        int max = 0;
        for(j=0; j<=sayim.length-1; j++){
           if(sayim[j]>=max)
               max = sayim[j];
           // Karsılatırma yontemiyle yeni oluşturdugumuz dizideki max rakamı bulduk 
        }
 
      System.out.println("Girilen Sayidaki En Büyük Rakam " + (char)max); 
      // dikkatimizi cekmesi gereken nokta max isimli değişkeni top zorlmasıyla 
      // char davranmaya zorlamamızdır. Dediğim gibi max isimli değişken aslında bir
      // asci kodu tutuyor. bunu karaktere cevirmemiz lazım. mesala 0000111 gibi bir sayı
      // girilse programa max rakam 1 oldugu için max isimli değişken 1'in asci kodu
      // olan 49 u tutacaktır. Kullanıcıya 49 yerine 1 'i ekranda göstermek için
      // tip zorlaması yapiyoruz.
      kactaneVar(sayim,(char) max);
      // kactaneVar isimli metod bir dizi, ve bir karakter ile çağrılıyor. Bu metod
      // gönderilen dizide aranan elemamın kac adet oldugunu ekrana mesaj edecek.
    }
 
   public static  void kactaneVar(int dizim [] , char arananKarakter){
   int kac=0;    
       int i;
       for(i=0; i<=dizim.length-1; i++ ){
            if(dizim[i]==arananKarakter){
                // aranan karakter bulundugunda ( ki burada maximum rakam oluyor)
                // kac değişkenini bir arttır.
                kac++;
            }
 
       }
 
 
 
      System.out.println("En Buyuk Karakter "  + kac +  "tane geçiyor");
   }   
}

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

Java Programlama : Sayıdaki En Büyük Rakamın Kaç Defa Geçtiğini Bulma” hakkında 1 yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print