62,616
社区成员
发帖
与我相关
我的任务
分享
class Matrix {
public static final String[] baseTable = {
"zero", "one", "tow", "three", "four", "five",
"six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen", "twenty",
"", "", "", "", "", "", "", "", "", "thirty",
"", "", "", "", "", "", "", "", "", "fourty",
"", "", "", "", "", "", "", "", "", "fifty",
"", "", "", "", "", "", "", "", "", "sixty",
"", "", "", "", "", "", "", "", "", "seventy",
"", "", "", "", "", "", "", "", "", "eighty",
"", "", "", "", "", "", "", "", "", "ninety"
};
public static final String[] unitTable = {"hundred", "thousand"};
public static void main(String[] args) {
int sum = 0;
for (int i=1; i<=1000; i++) {
String s = analyze(i);
System.out.println(s);
sum += s.length();
}
System.out.println(sum);
}
public static String analyze(int num) {
if (num < 0) {return "";}
StringBuilder buf = new StringBuilder();
if (num < 20) {
return baseTable[num];
} else if (num < 100) {
if (num%10 == 0) {
buf.append(baseTable[num]);
} else {
buf.append(baseTable[num-num%10]);
buf.append(baseTable[num%10]);
}
} else if (num < 1000) {
buf.append(baseTable[num/100]).append(unitTable[0]);
if (num%100 != 0) {
buf.append("and");
buf.append(analyze(num%100));
}
} else if (num < 10000) {
buf.append(baseTable[num/1000]).append(unitTable[1]);
if (num%1000 != 0) {
buf.append("and");
buf.append(analyze(num%1000));
}
}
return buf.toString();
}
}
String analyze(int num) {
int[] dig = new int[String.valueOf(num).length];
int idx = dig.length-1;
while (num > 0) {
dig[idx--] = num%10;
num /= 10;
}
StringBuilder buf = new StringBuilder();
switch (dig.length) {
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4: //这里只大概写下4位数这里的思路,其他LZ自己写吧
buf.append(baseTable[dig[0]]).append(unitTable[1]).append("and");
if (dig[1] > 0) {buf.append(baseTable[dig[1]]).append(unitTable[0]).append("and");}
if (dig[2] > 0) {buf.append(baseTable[dig[2]]);}
if (dig[3] > 0) {buf.append(baseTable[dig[3]]);}
break;
default:
...
break;
}
return buf.toString();
}
主程序
int sum = 0;
for (int i=1; i<=1000; i++) {
sum += analyze(i).length();
}