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

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]);
            }
        }
    }
       

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值