题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("1", "one"); hashMap.put("2", "two"); hashMap.put("3", "three"); hashMap.put("4", "four"); hashMap.put("5", "five"); hashMap.put("6", "six"); hashMap.put("7", "seven"); hashMap.put("8", "eight"); hashMap.put("9", "nine"); HashMap<String, String> tenthMap = new HashMap<>(); // tenthMap.put("1", "one"); tenthMap.put("2", "twenty"); tenthMap.put("3", "thirty"); tenthMap.put("4", "forty"); tenthMap.put("5", "fifty"); tenthMap.put("6", "sixty"); tenthMap.put("7", "seventy"); tenthMap.put("8", "eighty"); tenthMap.put("9", "ninety"); HashMap<String, String> tenthsMap = new HashMap<>(); tenthsMap.put("0", "ten"); tenthsMap.put("1", "eleven"); tenthsMap.put("2", "twelve"); tenthsMap.put("3", "thirteen"); tenthsMap.put("4", "fourteen"); tenthsMap.put("5", "fifteen"); tenthsMap.put("6", "sixteen"); tenthsMap.put("7", "seventeen"); tenthsMap.put("8", "eighteen"); tenthsMap.put("9", "nineteen"); while (str.length() % 3 != 0) { str = "0" + str; } StringBuilder stringBuilder = new StringBuilder(); int length = str.length(); List<StringBuilder> list = new ArrayList<>(); for (int i = length; i >= 0; i--) { boolean flag = false; String subString = str.substring(i - 3, i); int localResult = Integer.parseInt(subString); StringBuilder st = new StringBuilder(); if (localResult != 0) { int digit = localResult % 10; localResult = localResult / 10; if (localResult != 0) { int tenth = localResult % 10; localResult = localResult / 10; if (localResult != 0) { int hundred = localResult % 10; st.append(hashMap.get(String.valueOf(hundred))).append(" hundred "); if (tenth != 0 || digit != 0) st.append("and "); } if (tenth >= 2) { st.append(tenthMap.get(String.valueOf(tenth))).append(" "); if (digit != 0) { st.append(hashMap.get(String.valueOf(digit))).append(" "); flag = true; } } else if (tenth == 1) { // st.append("and "); st.append(tenthsMap.get(String.valueOf(digit))); flag = true; } else if (digit != 0) { st.append(hashMap.get(String.valueOf(digit))).append(" "); flag = true; } } if (!flag && digit != 0) st.append(hashMap.get(String.valueOf(digit))).append(" "); } list.add(st); i = i - 2; if (i - 1 <= 0) break; } String result = ""; int listLength = list.size(); result = list.get(0).toString(); int i = 1; if (i < listLength) { result = list.get(i).toString() + "thousand " + result; i ++; if (i < listLength) { result = list.get(i).toString() + "million " + result; i ++; if (i < listLength) { result = list.get(i).toString() + "billion " + result; } } } System.out.println(result); } }