Soru & Cevap

klavyeden girilen 3 basamaklı sayıyı yazıya ceviren program

12.11.2015 - 11:33

package odev2; import java.io.IOException; import java.util.Scanner; public class Odev2 { public static void main(String[] args) { Scanner k=new Scanner(System.in); System.out.println("üç basamaklı bır sayı gırınız"); int bb,ob,yb; try{ int sayi=k.nextInt(); if(sayi99){ bb=sayi%10; ob=sayi/10; ob=ob%10; yb=sayi/100; System.out.println("bırler basamagı:"+bb); System.out.println("onlar basamagı:"+ob); System.out.println("yuzler basamagı:"+yb); switch(yb){ case 1:System.out.print("bir");break; case 2:System.out.print("iki");break; case 3:System.out.print("üc");break; case 4:System.out.print("dört");break; case 5:System.out.print("beş");break; case 6:System.out.print("altı");break; case 7:System.out.print("yedi");break; case 8:System.out.print("sekiz");break; case 9:System.out.print("dokuz");break; } switch(ob){ case 0:System.out.print("sifir");break; case 1:System.out.print("bir");break; case 2:System.out.print("iki");break; case 3:System.out.print("üc");break; case 4:System.out.print("dört");break; case 5:System.out.print("beş");break; case 6:System.out.print("altı");break; case 7:System.out.print("yedi");break; case 8:System.out.print("sekiz");break; case 9:System.out.print("dokuz");break; } switch(bb){ case 0:System.out.print("sifir");break; case 1:System.out.print("bir");break; case 2:System.out.print("iki");break; case 3:System.out.print("üc");break; case 4:System.out.print("dört");break; case 5:System.out.print("beş");break; case 6:System.out.print("altı");break; case 7:System.out.print("yedi");break; case 8:System.out.print("sekiz");break; case 9:System.out.print("dokuz");break; } }else System.out.println("girdıgınız sayı üç basamaklı deyıldır"); }catch(Exception e){ System.out.println("hatalı gırıs yaptınız"); } } }

1,500 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-28812-1452251417.jpg
umutonur
13.11.2015 - 01:42
package javaapplication1;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JavaApplication1 {

    public static String[] birler = new String[]{"", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz"};
    public static String[] onlar = new String[]{"", "On ", "Yirmi ", "Otuz ", "Kırk ", "Elli ", "Altmış ", "Yetmiş ", "Seksen ", "Doksan "};
    public static String[] yuzler = new String[]{"", "Yüz ", "İkiyüz ", "Üçyüz ", "Dörtyüz ", "Beşyüz ", "Altıyüz ", "Yediyüz ", "Sekizyüz ", "Dokuzyüz "};
    public static String[] basamak = new String[]{"", " Bin ", " Milyon ", " Milyar ", " Trilyon "};

    public static void main(String[] args) {
        Scanner girisYap = new Scanner(System.in);
        System.out.print("Bir sayı giriniz : ");
        String i = girisYap.next();
        if (i.matches("[0-9]*")) {
            System.out.println(yazdir(Integer.parseInt(i)));
        } else {
            System.err.println("Sadece rakamlardan oluşan bir değer girmelisiniz!!!");
        }
    }

    public static String yazdir(int sayi) {
        String sonuc = "";
        if (sayi > 0) {
            sonuc = basamaklarinaAyir(sayi);
        } else if (sayi < 0) {
            sonuc = "Eksi " + basamaklarinaAyir(Math.abs(sayi));
        } else {
            sonuc = "Sıfır";
        }
        return sonuc;
    }

    public static String basamaklarinaAyir(int sayi) {
        String sonuc = "", s = String.valueOf(sayi);
        int i = s.length();
        int b = i, x, n = 0;
        while (i > 0) {
            b = (b > 3 ? i - 3 : 0);
            sonuc = ayir(s.substring(b, i)) + basamak[n] + sonuc;
            i = i - 3;
            n++;
        }
        if (sonuc.matches("(Bir) Bin ([A-Za-zğüşıöçĞÜŞİÖÇ[\\s]]*)")) {
            Pattern p = Pattern.compile("(Bir) Bin ([A-Za-zğüşıöçĞÜŞİÖÇ[\\s]]*)");
            Matcher m = p.matcher(sonuc);
            if (m.find()) {
                sonuc = "Bin " + m.group(2);
            }
        }
        return sonuc;
    }

    public static String ayir(String s) {
        String sonuc = "";
        int i = s.length();
        switch (i) {
            case 3:
                sonuc = yuzler[Integer.parseInt(String.valueOf(s.charAt(i - 3)))];
            case 2:
                sonuc = sonuc + onlar[Integer.parseInt(String.valueOf(s.charAt(i - 2)))];
            case 1:
                sonuc = sonuc + birler[Integer.parseInt(String.valueOf(s.charAt(i - 1)))];
            default:
        }
        return sonuc;
    }
}

Değişik bir algoritma oldu galiba.. :) 

Ben Trilyon'a kadar yaptım ama sen dahada ekleyebilirsin : 

public static String[] basamak = new String[]{"", " Bin ", " Milyon ", " Milyar ", " Trilyon "};

bu kısımda  " Trilyon "," Katrilyon ", " Kentrilyon " v.b. eklemeler yapılabilir..

 

Profile picture for user sakelestemur
sakelestemur
12.11.2015 - 02:30

Kodu, "Kod parçacağı ekle" bölümünden paylaşırsanız daha okunaklı olur.