Java输入一个三位正整数(100~999),输出其对应的汉字,例如678输出六百七十八 (两种解法)

看到有同学在问,感觉挺有意思的,自己写了下

方式一

运用 if 判断, switch语句,三元运算符(代替了 if 语句,更加美观)
要考虑以下几种情况:
100 - 一百
101 - 一百零一
110 - 一百一十
001 - 不在范围
1000 - 不在范围

public class MyClass {
    
    
    public static void main(String[] args) {
    
    
        getString(678);
    }
    private static void getString(int i){
    
    
        if (i > 999 || i< 100){
    
    
            System.out.println("请输入100~999的正整数");
            return;
        }
        int bai =i/100%10;
        int shi =i/10%10;
        int ge =i%10;
        String b = getToString(bai).equals("零") ? "" : getToString(bai)+"百";
        String s = getToString(shi);
        s = b.equals("") && s.equals("零") ? "" : s;
        String g = getToString(ge).equals("零") ? "" : getToString(ge);
        if(g.equals("")){
    
    
           s = s.equals("零") ? "" : s + "十";
        }else {
    
    
           s = s.equals("零") ? s : s + "十";
        }

        System.out.println(b+s+g);
    }

    private static String getToString(int i){
    
    
        String s = "";
        switch (i){
    
    
            case 0:
                s = "零";
                break;
            case 1:
                s = "一";
                break;
            case 2:
                s = "二";
                break;
            case 3:
                s = "三";
                break;
            case 4:
                s = "四";
                break;
            case 5:
                s = "五";
                break;
            case 6:
                s = "六";
                break;
            case 7:
                s = "七";
                break;
            case 8:
                s = "八";
                break;
            case 9:
                s = "九";
                break;
        }
        return s;
    }
}

方式二

这个方式是我网上找到的,但是有些问题(900输出九百零零),我自己稍微改了一下,加了注释

public class MyClass {
    
    
    public void convert(int number) {
    
    
        //限制输入内容
        if (number > 999 || number< 100){
    
    
            System.out.println("请输入100~999的正整数");
            return;
        }
        //数字对应的汉字
        String[] num = {
    
    "零","一","二","三","四","五","六","七","八","九"};
        //单位
        String[] unit = {
    
    "","十","百"};
        //将输入数字转换为字符串
        String result = String.valueOf(number);
        //将该字符串分割为数组存放
        char[] ch = result.toCharArray();
        //结果 字符串
        String str = "";
        //获取数组长度
        int length = ch.length;
        //循环
        for (int i = 0; i < length; i++) {
    
    
            //拿到对应的数字
            int c = (int)ch[i]-48;
            //不为0时获取中文以及添加单位
            if(c != 0) {
    
    
                str += num[c]+unit[length-i-1];
            } else {
    
    
                //下一个数字判断,目的是避免出现 九百零零的情况
                if (i+1 < length) {
    
    
                    //下一个数字
                    int next = (int) ch[i + 1] - 48;
                    //当下一个数字为0时添加空字符,也就是啥也不加,否则添加零
                    if (next == 0) {
    
    
                        str += "";
                    } else {
    
    
                        str += num[c];
                    }
                }
            }
        }
        System.out.println(str);
    }

    @SuppressWarnings("resource")
    public static void main(String[] args) {
    
    
        new MyClass().convert(678);
    }

}

以上两种方式亲测有效

猜你喜欢

转载自blog.csdn.net/As_thin/article/details/124302186
今日推荐