题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static String[] ones = new String[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "forteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty" }; public static String[] twieties = new String[] {"zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}; public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String str; while ((str = buf.readLine()) != null) { if (str.length() <= 9) { System.out.println(getEn(Integer.parseInt(str))); } else { System.out.println("error"); } } } public static String getEn(int num) { String stren = "error"; if ( num <= 20) { stren = ones[num]; } else if (num < 100) { int remainder = num % 10; if (remainder == 0) { stren = twieties[num / 10]; } else { stren = twieties[num / 10] + " " + ones[remainder]; } } else if (num < 1000) { int remainder = num % 100; if (remainder == 0) { stren = ones[num / 100] + " hundred"; } else { stren = ones[num / 100] + " hundred and " + getEn(remainder); } } else if (num < 1000000) { int remainder = num % 1000; if (remainder == 0) { stren = getEn(num / 1000) + " thousand"; } else { stren = getEn(num / 1000) + " thousand " + getEn(remainder); } } else if (num < 1000000000) { int remainder = num % 1000000; if (remainder == 0) { stren = getEn(num / 1000000) + " million"; } else { stren = getEn(num / 1000000) + " million " + getEn(remainder); } } return stren; } }