阿拉伯數字的讀法(JAVA實現)

import java.util.Scanner;

public class Main{
    static int flg=0;
    static String []s1={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    static String []s2={"","shi","bai","qian"};
    static String []s3={"","wan","yi"};
    public static void main(String args[])
    {
        Scanner input=new Scanner(System.in);
        int a=input.nextInt();
        input.close();
        String s=read(a);
        System.out.println(s);
    }
    public static String fun(int a)
    {
        String s="";
        int i,cnt=0;
        boolean flag=false;  //"零"開頭的情況
        boolean ff=false;      //"yi shi"開頭的情況
        if(a%100==a && a>=10 && (int)a/10==1)    //判斷是否"yi shi"開頭
        {
            a=a%10;
            ff=true;
        }
        while(a!=0)
        {
            i=a%10;
            a=a/10;
            if(i!=0)
            {
                s=s2[cnt]+' '+s;
                s=s1[i]+' '+s;
                flag=true;        
            }
            else if(flag)        //處理四位中間有零的情況
            {
                s=s1[i]+' '+s;
                flag=false;
            }
            cnt++;
        }
        if(ff) s="shi "+s.trim();
    return s.trim();
    }
    public static String read(int n){
        String tmp="";
        int a;
        int cnt=1;
        while(n>0)
        {
            a=n%10000;        
            n=n/10000;                                
            if(a!=0) tmp=fun(a)+tmp;                    //處理一般情況,可防止出現零在末尾的情況
            if(n!=0 && a<1000 && a!=0) tmp="ling "+tmp;    //處理零在中間的情況
            if(n%10000!=0) tmp=' '+s3[cnt]+' '+tmp;        //處理整萬數
            cnt++;
        }
    return tmp;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章