把數字轉換成人民幣大寫的形式Java類
/**
@author sunpander
把輸入的數字轉換成人民幣大寫的形式 */
import java.io.BufferedReader; import java.io.InputStreamReader;
public class ChangeNumToRMB {
String moneyStrs[] = { "零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖" };
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean isDebug = true;
while (isDebug) {
int num = 0;
String changedStr = "";
System.out.println("請輸入需要轉換的金額:");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
boolean isWrongInput = true;
while (isWrongInput) {
try {
String str = br.readLine();
num = Integer.parseInt(str);
} catch (Exception e) {
System.out.println("輸入數字有誤,必須是:0" + "到" + Integer.MAX_VALUE
+ " 的整數");
// TODO Auto-generated catch block
// e.printStackTrace();
isWrongInput = true;
continue;
}
isWrongInput = false;
}
ChangeNumToRMB chan = new ChangeNumToRMB();
changedStr = chan.getChangedString(num);
}
}
public String getChangedString(int num) {
// Money用于存放輸入的金額數
int moneyNum = num;
String moneyStr = "";
System.out.println("輸入的錢數是:");
if (moneyNum < 0) {
System.out.println("數字必須大于零");
} else if (moneyNum == 0) {
moneyStr = "零元";
}
// 只有四位數,即最大9999.小于10000
else if (moneyNum < 10000) {
moneyStr = this.getFourNumStr(moneyNum) + "元";
}
// 大于一萬,小于一千萬
else if (moneyNum <= 10000000)// && moneyNum>10000)
{
int firstFourNum, lastFourNum;
firstFourNum = moneyNum / 10000;
lastFourNum = moneyNum % 10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if (!lastFourStr.contains("仟"))
lastFourStr = "零" + lastFourStr;
moneyStr = firstFourStr + "萬" + lastFourStr + "元";
}
// 大于一千萬.即上億但小于最大整數
else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)
{
int firstFourNum, secondFourNum, lastFourNum;
firstFourNum = moneyNum / 100000000;
secondFourNum = (moneyNum / 10000) % 1000;
lastFourNum = moneyNum % 10000;
String firstFourStr = this.getFourNumStr(firstFourNum);
String secondFourStr = this.getFourNumStr(secondFourNum);
String lastFourStr = this.getFourNumStr(lastFourNum);
if (!lastFourStr.contains("仟"))
lastFourStr = "零" + lastFourStr;
if (!secondFourStr.contains("仟"))
secondFourStr = "零" + secondFourStr;
moneyStr = firstFourStr + "億" + secondFourStr + "萬" + lastFourStr
+ "元";
} else
System.out.println("someting is wrong");
System.out.println(moneyStr);
return moneyStr;
}
public String getFourNumStr(int fourNum) {
int qian, bai, shi, ge;
ge = fourNum % 10;
shi = (fourNum % 100) / 10;
bai = (fourNum % 1000) / 100;
qian = fourNum / 1000;
String strTemp = "";
if (qian != 0) {
strTemp = strTemp.concat(moneyStrs[qian] + "仟");
strTemp = strTemp.concat(moneyStrs[bai] + "佰");
strTemp = strTemp.concat(moneyStrs[shi] + "什");
strTemp = strTemp.concat(moneyStrs[ge]);
strTemp = strTemp.replace("零佰", "零");
strTemp = strTemp.replace("零什", "零");
strTemp = strTemp.replace("零零", "零");
strTemp = strTemp.replace("零零", "零");
if (strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length() - 1);
} else if (bai != 0) {
strTemp = strTemp.concat(moneyStrs[bai] + "佰");
strTemp = strTemp.concat(moneyStrs[shi] + "什");
strTemp = strTemp.concat(moneyStrs[ge]);
strTemp = strTemp.replace("零什", "零");
strTemp = strTemp.replace("零零", "零");
if (strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length() - 1);
} else if (shi != 0) {
strTemp = strTemp.concat(moneyStrs[shi] + "什");
strTemp = strTemp.concat(moneyStrs[ge]);
if (strTemp.endsWith("零"))
strTemp = strTemp.substring(0, strTemp.length() - 1);
} else
strTemp.concat(moneyStrs[ge]);
return strTemp;
}
}</pre>
本文由用戶 uyu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!