描述
给定一个非负整数x,请编写一个算法返回一个string,代表该整数的英文描述。
测试样例:
1234
返回:"One Thousand,Two Hundred Thirty Four"
/*
* 输入数字输出相应字符串
*
*/
public class NumToStringx {
String[] baseNum = { "zero", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve", " thirteen",
" fourteen", " fifteen", " sixteen", "seventeen", "eighteen",
"nineteen", };
String[] tyNum = { "twenty", "thirty", "forty", "fifty", "sixty",
"seventy", "eighty", "ninety" };
String[] bigNum = { "", "shousand", "million", "billion" };
public void numToString(int n) {
StringBuffer result = null;
int temp;
int num = n;
int j = 0;
if (num == 0) {
System.out.println(baseNum[0]);
return;
}
while (num != 0) {
temp = num % 1000;// 三位数字分为一段
if (j == 0) {// j表示thousand、million、billion
result = tempToString(temp).append(" " + bigNum[j]);
} else {
result = tempToString(temp).append(" " + bigNum[j])
.append(" , ").append(result);
}
j++;
num = num / 1000;
}
System.out.println(result);
}
// 将三位数转换为string
public StringBuffer tempToString(int temp) {//
StringBuffer num = new StringBuffer();
int i = temp / 100;
if (i != 0)
num = num.append(baseNum[i] + " hundred ");
i = temp % 100;
if (0 < i && i < 19) {
num = num.append(baseNum[i]);
} else {
num = num.append(tyNum[i / 10 - 1]);
if (i / 10 != 0)// 排除尾数为0
num.append("-" + baseNum[i / 10]);
}
return num;
}
public static void main(String[] ede) {
NumToStringx numToStringx = new NumToStringx();
numToStringx.numToString(0);
numToStringx.numToString(46);
numToStringx.numToString(546);
numToStringx.numToString(6546);
numToStringx.numToString(1354565460);
}
}