首先得学会英语(我只能百度)
然后按1000 来读,注意20 以内直接读
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String[] NUMS = {"zero", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"};
String[] NUMSSHI = {"zero", "ten", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"};
String[] POWER = {"", "hundred", "thousand", "million", "billion"};
while(in.hasNext()){
String line = in.nextLine();
StringBuilder sb = new StringBuilder();
ArrayList<String> lists = new ArrayList<>();
if(!line.matches("\\d+")){
System.out.println("error");
}
int linenum = Integer.parseInt(line);
int power = 1;
while(linenum != 0){
if(power != 1){
lists.add(POWER[power]);
}
int t = linenum % 1000;
//注意小于20,直接读
if(t % 100 <= 20){
lists.add(NUMS[t % 100]);
t /= 100;
// 有百位
if(t % 10 != 0){
lists.add("and");
lists.add("hundred");
lists.add(NUMS[t % 10]);
}
}else{
// 有个位
if(t % 10 != 0){
lists.add(NUMS[t % 10]);
}
t /= 10;
// 有十位
if(t % 10 != 0){
lists.add(NUMSSHI[t % 10]);
}
t /= 10;
// 有百位
if(t % 10 != 0){
lists.add("and");
lists.add("hundred");
lists.add(NUMS[t % 10]);
}
}
linenum /= 1000;
power++;
}
for(int i = lists.size() - 1; i >= 0; i--){
sb.append(lists.get(i) + " ");
}
System.out.println(sb.toString());
}
}
} 
京公网安备 11010502036488号