现在的位置: 首页 > 综合 > 正文

输入12345,相应输出一万两千三百四十五的算法

2013年10月02日 ⁄ 综合 ⁄ 共 1283字 ⁄ 字号 评论关闭

public class numberic {
    public static void main(String[] args){
        printNumToChinese(11124267345786l);
    }
   
    private static void printNumUnit(int digit){
        String[] num_unit = {"十","百","千","万","亿"};
        if(digit%8 == 0 && digit != 0)
            System.out.print(num_unit[4]);
        if((digit - 4)%8 == 0 && digit%8 != 0)
            System.out.print(num_unit[3]);
        if((digit - 3)%4 == 0)
            System.out.print(num_unit[2]);
        if((digit - 2)%4 == 0)
            System.out.print(num_unit[1]);
        if((digit - 1)%4 == 0)
            System.out.print(num_unit[0]);
    }
   
    private static void printNumToChinese(long num){
        String[] chs_num = {"零","一","二","三","四","五","六","七","八","九","十"};
        boolean flag = true;//为了标两亿零七百八十跟两亿三百万零七百八十中要不要加万的区别
        for(int i = String.valueOf(num).length() - 1; i >= 0; i--){
            int n = (int)(num/Math.pow(10, i));
            if(num == 0)
                break;
            if(n != 0)
                System.out.print(chs_num[n]);
            if(n != 0){
                printNumUnit(i);
            }
            num = num - n*(long)Math.pow(10, i);
            if(n == 0 && i - String.valueOf(num).length() >= 4)
                flag = false;
            if(i%4 == 0 && n == 0 && flag){
                printNumUnit(i);
                flag = true;
            }
            if(i - String.valueOf(num).length() == 0 && n == 0){
                    System.out.print(chs_num[n]);
            }
        }
    }
       

}

【上篇】
【下篇】

抱歉!评论已关闭.