Java實現(xiàn)數(shù)字金額轉中文大寫金額的完整過程
一、功能概述
本程序實現(xiàn)將用戶輸入的整數(shù)金額(0~9999999)轉換為符合財務規(guī)范的中文大寫金額,并自動添加單位符號(如“萬”、“仟”、“佰”等)。例如輸入 1234
,輸出 壹仟貳佰叁拾肆元
。
二、核心代碼解析
1. 輸入驗證模塊
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)
- 亮點:使用無限循環(huán)強制用戶輸入合法值
- 風險點:未處理非數(shù)字輸入(如輸入字母會崩潰)
2. 數(shù)字拆分與大寫轉換
String result = ""; while(true) { int temp = inputMoney % 10; // 取末位數(shù)字 inputMoney = inputMoney / 10; String resultString = toBigChange(temp); // 轉換為大寫 result = resultString + result; // 逆序拼接 if (inputMoney == 0) break; }
- 算法邏輯:
- 通過取余操作
%10
獲取數(shù)字的末位 - 通過整除
/10
移除已處理的末位 - 逆序拼接保證數(shù)字順序正確
- 通過取余操作
3. 補零處理(七位對齊)
int len = 7 - result.length(); for(int i = 0; i < len; i++) { result = "零" + result; }
- 示例:輸入
123
→ 補零為零零零壹貳叁
- 作用:為后續(xù)添加單位符號提供統(tǒng)一長度基礎
4. 添加金額單位
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; }
單位對照表:
索引 0 1 2 3 4 5 6 佰 拾 萬 仟 佰 拾 元
- 輸出示例:
零佰零拾零萬壹仟貳佰叁拾肆元
三、關鍵方法說明
1. 數(shù)字轉大寫方法
public static String toBigChange(int number) { String[] bigArray = {"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"}; return bigArray[number]; }
- 映射規(guī)則:直接通過數(shù)組下標轉換
- 注意事項:依賴輸入驗證確保
number
在0~9之間
四、運行示例演示
輸入:1234
處理流程:
- 拆分數(shù)字:
1 2 3 4
- 轉大寫:
壹 貳 叁 肆
- 補零:
零零零壹貳叁肆
- 加單位:
零佰零拾零萬壹仟貳佰叁拾肆元
最終輸出:
零零零壹貳叁肆
零佰零拾零萬壹仟貳佰叁拾肆元
五、代碼優(yōu)化建議
1. 輸入驗證增強
try { int temp = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("請輸入數(shù)字!"); sc.nextLine(); // 清除非數(shù)字輸入 continue; }
2. 單位順序調整
更符合中文習慣的單位順序:
String[] symbolArray = {"佰", "拾", "萬", "仟", "佰", "拾", "元"};
3. 補零邏輯優(yōu)化
// 使用String.format格式化補零 result = String.format("%07d", Integer.parseInt(result));
六、擴展思考
如何支持更大金額(如億級)?
- 增加單位數(shù)組:
{"億", "仟", "佰", "拾", "萬", ...}
- 增加單位數(shù)組:
如何處理小數(shù)金額(元角分)?
- 拆分整數(shù)和小數(shù)部分分別處理
- 補充單位:
"角", "分"
如何去除多余零值?
- 正則替換:
result.replaceAll("零[仟佰拾]", "零")
- 正則替換:
七、源碼
package com.insightfuture.string; import java.util.Scanner; public class StringTest6 { public static void main(String[] MakeItPossible) { // 整數(shù)拆解 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; // 得到最左邊的一個數(shù) inputMoney = inputMoney / 10; // 刪除最左邊的一個數(shù) // 將這個數(shù)傳給函數(shù)得到這個數(shù)的大寫形式 String resultString = toBigChange(temp); // 將返回的大寫字母憑借,注意順序(拆是從右到左,拼接則是從左到右) result = resultString + result; if (inputMoney == 0) { // 處理的數(shù)據(jù)到 0 了, 表示拆完了,直接終止! break; } } // 七位金額數(shù)值,不足左邊補零 int len = 7 - result.length(); for(int i = 0; i < len; i++) { result = "零" + result; } System.out.println(result + " "); System.out.println(addSymbolHandle(result) + " "); } /** * toBigChange方法:根據(jù)傳入的數(shù)字返回該數(shù)字的大寫 * @param number * @return String */ public static String toBigChange(int number) { String[] bigArray = {"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"}; return bigArray[number]; } /** * addSymbolHandle方法:根據(jù)金額插入單位 * @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; } }
八、總結
通過這個案例,我們掌握了:
- 數(shù)字拆解與逆序拼接的技巧
- 中文金額單位的添加規(guī)則
- 輸入驗證的基本實現(xiàn)方法
以上就是Java實現(xiàn)從數(shù)字到中文大寫金額的完整過程的詳細內容,更多關于Java數(shù)字轉中文大寫金額的資料請關注腳本之家其它相關文章!
相關文章
Eclipse引用XSD實現(xiàn)XML配置文件提示標簽的方法
今天小編就為大家分享一篇關于Eclipse引用XSD實現(xiàn)XML配置文件提示標簽的方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Java程序連接數(shù)據(jù)庫的常用的類和接口介紹
這篇文章主要介紹了Java程序連接數(shù)據(jù)庫的常用的類和接口,包括Connection類和Statement類等,需要的朋友可以參考下2015-10-10Spring框架學習之Spring?@Autowired實現(xiàn)自動裝配的代碼
自動裝配就是說,你不用手動實現(xiàn)bean之間的組合關系,只要使用了@Autowired注解,程序就會自動的注入這個需要的bean,前提是你的Spring容器有這個bean,這篇文章主要介紹了Spring?@Autowired實現(xiàn)自動裝配,需要的朋友可以參考下2021-12-12