当输入一个数字时会显示其对应大学数字】12.563    -->>  12.56   壹拾贰圆伍角陆分整   1000.5    -->>  1000.50 壹仟元零伍角整

解决方案 »

  1.   


    public static void main(String[] args) {
    test t = new test();
    System.out.println(t.encoder(12.01));
    }

    static final String[] flag1 = new String[]{
    "圆","拾","佰","仟"
    };
    static final String[] flag2 = new String[]{
    "角","分"
    };
    static final String[] num = new String[]{
    "壹","贰","叁","肆","伍","陆","漆","捌","玖"
    };

    public String encoder(double d) {
    String tmp = String.format("%01.2f", d);

    String left,right;
    left = tmp.substring(0,tmp.indexOf("."));
    right = tmp.substring(tmp.indexOf(".")+1);

    StringBuilder str = new StringBuilder();
    for(int i = 0; i < left.length(); i ++) {
    if(left.charAt(i) != '0') {
    str.append(num[Integer.parseInt(left.substring(i,i+1))-1]);
    str.append(flag1[left.length()-i-1]);
    }
    }
    if(str.charAt(str.length()-1) != '圆') str.append("圆");
    for(int i = 0; i < right.length(); i ++) {
    if(right.charAt(i) != '0') {
    str.append(num[Integer.parseInt(right.substring(i,i+1))-1]);
    str.append(flag2[i]);
    }
    }
    str.append("整");

    return str.toString();
    }
      

  2.   

    呵呵,他是为了让你自己体会以下引用3楼public static void main(String[] args) {
            test t = new test();
            System.out.println(t.encoder(12.01));
        }
        // 不说了,全局常量
        static final String[] flag1 = new String[]{
            "圆","拾","佰","仟"
        };
        static final String[] flag2 = new String[]{
            "角","分"
        };
        static final String[] num = new String[]{
            "壹","贰","叁","肆","伍","陆","漆","捌","玖"
        };
        // 主干程序
        public String encoder(double d) {
            // 小数点2位的格式化处理
            String tmp = String.format("%01.2f", d);
            
            String left,right;
            // 数部分值
            left = tmp.substring(0,tmp.indexOf("."));
            // 小数部分值
            right = tmp.substring(tmp.indexOf(".")+1);
                    StringBuilder str = new StringBuilder();
            for(int i = 0; i < left.length(); i ++) {
                // 这里有点问题,0的怎么办?应该有个else分支吧?
                if(left.charAt(i) != '0') {
                    str.append(num[Integer.parseInt(left.substring(i,i+1))-1]);
                    str.append(flag1[left.length()-i-1]);
                }
            }
            if(str.charAt(str.length()-1) != '圆') str.append("圆");
            // 小数部分大写对应
            for(int i = 0; i < right.length(); i ++) {
                if(right.charAt(i) != '0') {
                    str.append(num[Integer.parseInt(right.substring(i,i+1))-1]);
                    str.append(flag2[i]);
                }
            }
            str.append("整");
            
            return str.toString();
        }