题解 | #学英语#
学英语
http://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.*;
public class Main {
static String[] single = {"", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine"};
static String[] tes = {" ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen"};
static String[] x = {"", "", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety"};
static String[] y = {"", " thousand", " million", " billion"};
static String h = " hundred and";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num = sc.nextLine();
if (num.length() % 3 == 1) {
num = "00" + num;
} else if (num.length() % 3 == 2) {
num = "0" + num;
}
int index;
int size = num.length();
StringBuilder sb = new StringBuilder();
for (int i = size; i > 2; i -= 3) {
index = i > 12 ? (i - 12) / 3 : i / 3;
String temp = num.substring(size - i, size - i + 3);
if (i==3 && "100".equals(temp)){
sb.append(" one hundred");
}else {
sb.append(calc(temp)).append(y[index - 1]);
}
}
System.out.println(sb.substring(1, sb.length()));
}
public static String calc(String a) {
int num = Integer.parseInt(a);
StringBuilder sb = new StringBuilder();
if (num / 100 > 0) {//百位数
sb.append(single[num / 100]).append(h);
}
num = num % 100;
if (num / 10 >= 2) {//大于等于二十的十位数
sb.append(x[num / 10]).append(single[num % 10 % 10]);
} else if (num / 10 == 1) {
sb.append(tes[num % 10]);
} else {
sb.append(single[num % 10]);
}
return sb.toString();
}
}