Java ile sayilari yaziya donusturmek

'HTML-PHP-ASP-JAVA' forumunda Mavi_Sema tarafından 19 Mayıs 2009 tarihinde açılan konu

  1. Mavi_Sema

    Mavi_Sema Özel Üye

    Sponsorlu Bağlantılar
    Java ile sayilari yaziya donusturmek konusu Bu program ile 999 katrilyondan küçük sayilari yaziya dönüstürebilirsiniz.

    Önce daha sonra kolaylikla kullanabilmek için birkaç degisken yaratalim :


    import java.io.*;

    public class SayiCevirici{

    public static final String[] birler={"","bir","iki","uc","dort","bes","alti","y edi","sekiz","dokuz"};
    public static final String[] onlar={"","on","yirmi","otuz","kirk","elli","atmis ","yetmis","seksen","doksan"};
    public static final String[] basamaklar={"","bin","milyon","milyar","trilyon"," katrilyon"};



    Daha sonra bir sayinin belli bir basamagindaki rakami bulacak bir metod yazalim :



    public static int rakamBul(int i,int sayi){ //sayinin i basamagindaki rakamini bulur
    if(i<=0) return 0;
    else return ((int)(sayi%Math.pow(10,i))/(int)(Math.pow(10,i-1)));
    }




    Burada ise bir sayinin yuzluklerini ayiriyoruz.
    Yani örnek olarak : sayiAyir(36479348946)'nin sonucu {946,348,479,36} oluyor...


    public static int[] sayiAyir(long sayi_){ //sayiyi ucer ucer ayirir
    String sayi=""+sayi_;
    int uzunluk=sayi.length();
    int[] sayilar=new int[uzunluk/3+((uzunluk%3==0)?0:1)];
    sayi="000"+sayi;
    int i=0;
    try{
    while(i<uzunluk/3+((uzunluk%3==0)?0:1)){
    sayilar=Integer.parseInt(sayi.substring(sayi.length()-3));
    sayi=sayi.substring(0,sayi.length()-3);
    i++;
    }
    }catch(StringIndexOutOfBoundsException e){
    sayilar=Integer.parseInt(sayi);
    }

    return sayilar;
    }



    yuzlukCevir() metoduyla da üç basamakli sayilari yaziya dönüstürüyoruz :


    public static String yuzlukCevir(int sayi){ //uc basamakli sayiyi cevirir
    if(sayi/1000>0) return "hatali sayi !";
    else if(sayi==0) return "sifir";
    else{
    String sayininBirleri=birler[rakamBul(1,sayi)];
    String sayininOnlari=onlar[rakamBul(2,sayi)];
    String sayininYuzleri;
    if(rakamBul(3,sayi)==0) sayininYuzleri="";
    else if(rakamBul(3,sayi)==1) sayininYuzleri="yuz";
    else sayininYuzleri=birler[rakamBul(3,sayi)]+"yuz";
    return sayininYuzleri+sayininOnlari+sayininBirleri;
    }
    }



    En önemli metodumuza yardimci bütün metodlar tamam.
    Simdi geriye sadece herhangi bir sayiyi çevirecek bir metod kaldi :



    public static String sayiCevir(long sayi){ //1 kentrilyondan kuçuk sayiyi cevirir.
    if(sayi==0) return "sifir";
    String sonuc="";
    String eksi="";
    if(sayi<0) { eksi="eksi "; sayi=-sayi; }
    int[] bolumler=sayiAyir(sayi);
    if(bolumler.length>6) return "Cok buyuk sayi";
    else{
    for(int i=0;i<bolumler.length;i++){
    if(i==0) {
    if(bolumler!=0) sonuc=sonuc+yuzlukCevir(bolumler);
    }
    else if(i==1){
    if(bolumler==1) sonuc=basamaklar+" "+sonuc;
    else if(bolumler!=0) sonuc=yuzlukCevir(bolumler)+basamaklar+" "+sonuc;
    }
    else{
    if(bolumler!=0) sonuc=yuzlukCevir(bolumler)+basamaklar+" "+sonuc;
    }

    }
    return eksi+sonuc;
    }

    }



    Yazdigimiz bu metodlari deneyelim :


    public static void main (String args []) throws IOException {
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader in = new BufferedReader(isr);

    System.out.println("Bir sayi girin :");
    String sayi=in.readLine();
    long longSayi=0;
    try{
    longSayi=Long.parseLong(sayi);
    }catch(NumberFormatException e){
    System.out.println("Geçersiz sayi");
    System.exit(0);
    }

    System.out.println(" "+sayi+" sayisinin yaziyla degeri : "+sayiCevir(longSayi));
    }
    } // class definition'in sonu
     

Bu Sayfayı Paylaş