【java】输入1-9999数字,输出对应汉字,如1001 输出 一千零一

前言: 首先,lz是一个java爱好者,目前运用java编写性能测试工具和脚本,所以大神们有更好的答案请灌水!

题目:输入1-9999数字,输出对应汉字,如1001 输出 一千零一

    public static void main(String[] args) {
        //数字输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入1-9999之间的数字:");
        int count = sc.nextInt();
        System.out.println("输入的数字是:"+count);
        //数据对应库
        String[] uint = {"千","百","十"};
        String[] hcount = {"一","二","三","四","五","六","七","八","九","零"};
        StringBuilder sb = new StringBuilder();
        //数字对应方法
        /****
         * 取千位数字i/1000%10
         * 取百位数字i/100%10
         * 取十位数字i/10%10
         * 取个位数字i%10
         * ***/
        //输出千位
        if(count/1000%10!=0) {
            //System.out.println(hcount[count/1000%10-1]+uint[0]);
            sb.append(hcount[count/1000%10-1]+uint[0]);
        }
        //输出百位
        if(count/100%10!=0) {
            //System.out.println(hcount[count/100%10-1]+uint[1]);
            sb.append(hcount[count/100%10-1]+uint[1]);
        }else {
            if(sb.length()!=0&&(count/10%10!=0||count%10!=0)) {
                sb.append(hcount[9]);
            }
        }
        //输出十位
        if(count/10%10!=0) {
            //System.out.println(hcount[count/10%10-1]+uint[2]);
            sb.append(hcount[count/10%10-1]+uint[2]);
        }else {
            if(sb.length()!=0&&count%10!=0) {
                System.out.println(sb.charAt(sb.length()-1));
                if(sb.indexOf("零")!=sb.length()-1) {//防止出现9001 输出九千零零一的双零情况
                    sb.append(hcount[9]);
                }
                
            }
        }
        //输出个位
        if(count%10!=0) {
            //System.out.println(hcount[count%10-1]);
            sb.append(hcount[count%10-1]);
        }else {
            //个位是0并且千百十无数字
            if(sb.length()==0) {
                sb.append(hcount[9]);
            }
        }    
        //输出
        System.out.println(sb.toString());
    }

猜你喜欢

转载自blog.csdn.net/datuzijean/article/details/89786638