比如,用戶輸入: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));
else
list.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++) {
// 如果當前數字不爲0
if ((number.charAt(i) - '0') != 0) {
String temp1 = "";
// number爲兩位數並且number的十位必須是1
if (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;
// 遇到非零數字重置爲0
zeroCount = 0;
} else {
// 遇到零數字則統計
if (zeroCount == 0) {
temp += "零";
zeroCount++;
}
}
}
// digitNumber!=1表示總長度爲1位就不給刪除
if (zeroCount != 0 && digitNumber != 1) {
// 如果最後末尾有零,則將漢字零刪除
return temp.substring(0, temp.lastIndexOf("零"));
} else {
return temp;
}
}
}