16.text--金额转换

发布时间 2023-03-29 09:56:58作者: 小黑确实不黑

金额转换

例如:2135 --> 零佰零拾零万贰仟壹佰叁拾伍元
789 --> 零佰零拾零万零仟柒佰捌拾玖元
可以将大写的数字存放进数组中,用小写的数字作为索引使用

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);

    int money;
    System.out.println("请录入一个金额:");
    //1.键盘录入金额数字,并进行限制
    while (true){
        money = s.nextInt(); //2135
        if(money >= 0 && money <= 9999999){
            break;
        }else{
            System.out.println("输入金额有误!请重新输入:");
        }
    }

    //2.定义变量存放转换后的大写数字
    String moneyStr = "";
    //得到money的每一位数字
    while(true){
        //从右往左获取个位数数据
        int ge = money % 10;
        //传进方法中,转换为大写数字
        String capitalNumber = getCapitalNumber(ge);
        //变换位置,可以改变字符存放位置
        moneyStr = capitalNumber + moneyStr;
        //去掉已经获得的数据
        money = money / 10;

        //若每一位数都获取到了,则退出循环
        if(money == 0){
            break;
        }
    }

    //3.在前面补0,补足七位
    int count = 7 - moneyStr.length();
    for (int i = 0; i < count; i++) {
        moneyStr = "零" + moneyStr;
    }

    //4.插入单位
    //定义数组,表示单位
    String[] unit = {"佰","拾","万","仟","佰","拾","元",};
    String result = ""; //定义空数组拼接
    //遍历字符串,一个字符拼接一个单位
    for (int i = 0; i < moneyStr.length(); i++) {
        char c = moneyStr.charAt(i);
        result = result + c + unit[i];
    }

    //5.打印最终结果
    System.out.println(result);

    s.close();
}

//定义一个方法,存放大写数字,传入金额,作为索引,调取大写数字,以作转换
public static String getCapitalNumber(int number){
    String[] nums = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    return nums[number];
}