一、功能概述
本程序实现将用户输入的整数金额(0~9999999)转换为符合财务规范的中文大写金额,并自动添加单位符号(如"万"、"仟"、"佰"等)。例如输入 1234,输出 壹仟贰佰叁拾肆元。
二、核心代码解析
1. 输入验证模块
            
            
              java
              
              
            
          
          int inputMoney;
while (true) {
    System.out.println("请输入金额:");
    int temp = sc.nextInt();
    if (temp >= 0 && temp <= 9999999) {
        inputMoney = temp;
        break;
    } else {
        System.out.println("输入的金额有误,请重新输入!");
    }
}
        - 功能:确保输入金额在合法范围(0~9,999,999)
 - 亮点:使用无限循环强制用户输入合法值
 - 风险点:未处理非数字输入(如输入字母会崩溃)
 
2. 数字拆分与大写转换
            
            
              java
              
              
            
          
          String result = "";
while(true) {
    int temp = inputMoney % 10;   // 取末位数字
    inputMoney = inputMoney / 10; 
    String resultString = toBigChange(temp); // 转换为大写
    result = resultString + result; // 逆序拼接
    if (inputMoney == 0) break;
}
        - 算法逻辑 :
- 通过取余操作 
%10获取数字的末位 - 通过整除 
/10移除已处理的末位 - 逆序拼接保证数字顺序正确
 
 - 通过取余操作 
 
3. 补零处理(七位对齐)
            
            
              java
              
              
            
          
          int len = 7 - result.length();
for(int i = 0; i < len; i++) {
    result = "零" + result;
}
        - 示例 :输入 
123→ 补零为零零零壹贰叁 - 作用:为后续添加单位符号提供统一长度基础
 
4. 添加金额单位
            
            
              java
              
              
            
          
          public static String addSymbolHandle(String string) {
    String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
    String resultString = "";
    for(int i = 0; i < string.length(); i++) {
        char s = string.charAt(i);
        resultString += s + symbolArray[i];
    }
    return resultString;
}
        - 
单位对照表 :
markdown索引 0 1 2 3 4 5 6 佰 拾 万 仟 佰 拾 元 - 
输出示例 :
零佰零拾零万壹仟贰佰叁拾肆元 
三、关键方法说明
1. 数字转大写方法
            
            
              java
              
              
            
          
          public static String toBigChange(int number) {
    String[] bigArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    return bigArray[number];
}
        - 映射规则:直接通过数组下标转换
 - 注意事项 :依赖输入验证确保 
number在0~9之间 
四、运行示例演示
输入 :1234
处理流程:
- 拆分数字:
1 2 3 4 - 转大写:
壹 贰 叁 肆 - 补零:
零零零壹贰叁肆 - 加单位:
零佰零拾零万壹仟贰佰叁拾肆元 
最终输出:
零零零壹贰叁肆 
零佰零拾零万壹仟贰佰叁拾肆元 
        五、代码优化建议
1. 输入验证增强
            
            
              java
              
              
            
          
          try {
    int temp = sc.nextInt();
} catch (InputMismatchException e) {
    System.out.println("请输入数字!");
    sc.nextLine(); // 清除非数字输入
    continue;
}
        2. 单位顺序调整
更符合中文习惯的单位顺序:
            
            
              java
              
              
            
          
          String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        3. 补零逻辑优化
            
            
              java
              
              
            
          
          // 使用String.format格式化补零
result = String.format("%07d", Integer.parseInt(result));
        六、扩展思考
- 
如何支持更大金额(如亿级)?
- 增加单位数组:
{"亿", "仟", "佰", "拾", "万", ...} 
 - 增加单位数组:
 - 
如何处理小数金额(元角分)?
- 拆分整数和小数部分分别处理
 - 补充单位:
"角", "分" 
 - 
如何去除多余零值?
- 正则替换:
result.replaceAll("零[仟佰拾]", "零") 
 - 正则替换:
 
七、源码
            
            
              java
              
              
            
          
          package com.insightfuture.string;
import java.util.Scanner;
public class StringTest6 {
    public static void main(String[] MakeItPossible) {
        // 整数拆解
        Scanner sc = new Scanner(System.in);
        int inputMoney;
        while (true) {
            System.out.println("请输入金额:");
            int temp = sc.nextInt();
            if (temp >= 0 && temp <= 9999999) {
                inputMoney = temp;
                break;
            } else {
                System.out.println("输入的金额有误,请重新输入!");
            }
        }
        // 将金额拆分后调用方转成大写金额,然后拼接处理
        String result = "";
        while(true) {
            int temp = inputMoney % 10;   // 得到最左边的一个数
            inputMoney = inputMoney / 10; // 删除最左边的一个数
            // 将这个数传给函数得到这个数的大写形式
            String resultString = toBigChange(temp);
            // 将返回的大写字母凭借,注意顺序(拆是从右到左,拼接则是从左到右)
            result = resultString + result;
            if (inputMoney == 0) {
                // 处理的数据到 0 了, 表示拆完了,直接终止!
                break;
            }
        }
        // 七位金额数值,不足左边补零
        int len = 7 - result.length();
        for(int i = 0; i < len; i++) {
            result = "零" + result;
        }
        System.out.println(result + " ");
        System.out.println(addSymbolHandle(result) + " ");
    }
    /**
     * toBigChange方法:根据传入的数字返回该数字的大写
     * @param number
     * @return String
     */
    public static String toBigChange(int number) {
        String[] bigArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return bigArray[number];
    }
    /**
     * addSymbolHandle方法:根据金额插入单位
     * @param string
     * @return String
     */
    public static String addSymbolHandle(String string) {
        String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        String resultString = "";
        for(int i = 0; i < string.length(); i++) {
            // 1. 将字符串才分成 字符
            char s = string.charAt(i);
            // 2. 将字符拼接金额单位,累加后赋值给新的字符串存储
            resultString = resultString + s + symbolArray[i];
        }
        return resultString;
    }
}
        八、总结
通过这个案例,我们掌握了:
- 数字拆解与逆序拼接的技巧
 - 中文金额单位的添加规则
 - 输入验证的基本实现方法
 
动手挑战:尝试为本程序添加小数处理功能,在评论区晒出你的代码! 💻🚀