當前位置:
首頁 >
人民币金额大写
發布時間:2023/12/20
44
豆豆
在與財務相關的應用中,經常會用到人民幣金額的大寫,比如發票的打印程序。??本題的任務是:從鍵盤輸入一個十億以內的正整數(int類型),把它轉換為人民幣金額大寫(不考慮用戶輸入錯誤的情況)。?
比如,用戶輸入:35201,程序輸出:叁萬伍仟貳佰零壹??用戶輸入:30201,程序輸出:叁萬零貳佰零壹??用戶輸入:30001,程序輸出:叁萬零壹??用戶輸入:31000,程序輸出:叁萬壹仟?
用戶輸入:120023201,程序輸出:壹億貳仟零貳萬叁仟貳佰零壹??用戶輸入:120020001,程序輸出:壹億貳仟零貳萬零壹??用戶輸入:100000001,程序輸出:壹億零壹?
比如,用戶輸入:35201,程序輸出:叁萬伍仟貳佰零壹??用戶輸入:30201,程序輸出:叁萬零貳佰零壹??用戶輸入:30001,程序輸出:叁萬零壹??用戶輸入:31000,程序輸出:叁萬壹仟?
用戶輸入:120023201,程序輸出:壹億貳仟零貳萬叁仟貳佰零壹??用戶輸入:120020001,程序輸出:壹億貳仟零貳萬零壹??用戶輸入:100000001,程序輸出:壹億零壹?
可以看到,在萬后滿千位,則不加零,否則要補零,但不要出現類似“零零”的情況。??在億后滿千萬位,則不加零,否則要補零,但整個“萬檔”沒有數字時,“萬”字省去。
package MyTest;import java.util.ArrayList; import java.util.List; import java.util.Stack;public class MyTest {public static void main(String[] args) throws Exception {String[] multipleText = { "", "萬", "億" };String number = "121000";int length = number.length();List<String> list=new ArrayList<String>();while (length > 0) {if (length <= 4)list.add(number.substring(0, length));elselist.add(number.substring(length - 4, length));length -= 4;}Stack<String> stack=new Stack<String>();for (int i = 0; i < list.size(); i++) {String temp=NumberToChinese(list.get(i));if(!"".equals(temp))stack.push(temp+multipleText[i]);}while(!stack.isEmpty()){System.out.print(stack.pop());}}/*** @param number* 數字字符串* @return 漢字字符串*/public static String NumberToChinese(String number) {// 用于統計0個數int zeroCount = 0; // String[] numberText = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };String[] numberText = { "零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖" };String[] multipleText = { "仟", "佰", "拾", "" };int digitNumber = number.length();String temp = "";for (int i = 0; i < digitNumber; i++) {// 如果當前數字不為0if ((number.charAt(i) - '0') != 0) {String temp1 = "";// number為兩位數并且number的十位必須是1if (digitNumber == 2 && (number.charAt(i) - '0') == 1) {if (i == 1)temp1 = numberText[(number.charAt(i) - '0')];} else {// 將數字轉換為漢字temp1 = numberText[(number.charAt(i) - '0')];}// 獲取當前漢字的倍數String temp2 = multipleText[(multipleText.length - digitNumber) + i];// 將漢字數字與倍數合并temp += temp1 + temp2;// 遇到非零數字重置為0zeroCount = 0;} else {// 遇到零數字則統計if (zeroCount == 0) {temp += "零";zeroCount++;}}}// digitNumber!=1表示總長度為1位就不給刪除if (zeroCount != 0 && digitNumber != 1) {// 如果最后末尾有零,則將漢字零刪除return temp.substring(0, temp.lastIndexOf("零"));} else {return temp;}} }總結
- 上一篇: 机器学习-泛化能力
- 下一篇: 人的五要素:自我意识、关系意识、信息、计