Java学习

练习题:

生活中会遇到阿拉伯数字转化成对应的大写中文汉字的形式,请用程序实现一个从键盘录入一串数字,要求将输入的阿拉伯数字转成对应的大写中文汉字。

分析:

创建两个数组,分别用来装对应的阿拉伯数字转化成对应的大写中文汉字的形式,和金额的单位。

键盘录入一串数字,并把字符串分为小数点前和小数点后的数,通过小数点前的下标长度判断这个数是什么位级的数(因为是通过小数点分割两段数字,所以要判断小数点是否存在,如果不存在可以补上一个“.00”)。

然后把里面的数字放入一个长度为七数组中(因为最高位是万,且不需要小数点),放入数组可以通过小数点的下标知道小数点前一位是个位,而个位对应的下标我们可以规定位4(因为不能确定输入的是金额具体是多少,且不清楚小数点后是否有小数,例如23.2,只有一位,所以通过小数点的下标来确定每个数字应该放在数组的什么位置)这个是为了方便对应金额的单位。

最后定义一个方法用来转换阿拉伯数字,应为数组的长度为7,所以数组中可能会有值为零的而不是字符‘0’(可以通过在创建数组赋值提前解决),需要判断值为零就返回一个”零“字符串。剩下的可以通过计算把char类型的数据减去字符零‘0’,然后使用int类型的变量接收获得大写中文数字的下标。

代码实现: 

public class StringTest1 {
    public static void main(String[] args) {
        char[] shu = {'万', '千', '百', '十','元','毛','分'};
        Scanner sc = new Scanner(System.in);
        String next = sc.next();

        //因为是通过小数点分割两段数字,所以要判断小数点是否存在
        if (!next.contains(".")) {
            next = next + ".00";
        }
        int i = next.indexOf(".");
        char[] s = next.toCharArray();


        //创建一个新数组用来装数字(作用:用来剔除小数点)
        char[] s1 = new char[7];


        //该循环的作用:把小数点前的数放入新数组中(从个位开始放入,下标4是个位)
        int count = 4;
        for (int j = i; j > 0; j--) {
            s1[count] = s[j - 1];
            count--;
        }


        //该循环的作用:把小数点后的数放入新数组中(从小数点的后第一个数开始放入)
        count = 5;
        for (int j = i; j < s1.length; j++) {
            if (count <= 6 && (j + 1) < s.length) {
                s1[count] = s[j + 1];
                count++;
            }
        }


        for (int j = 0; j < s1.length; j++) {
            System.out.print(add(s1[j]) + shu[j] + " ");
        }
    }

    //用于转换的方法
    public static String add(char c) {
        //壹、贰、叁、肆、伍、陆、柒、捌、玖
        String[] a = {"零", "壹", "贰", "叁","肆","伍","陆","柒","捌","玖"};
        if (c == 0) {
            return "零";
        }
        int a1 = c - '0';
        return a[a1];
    }

}

运行结构:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值