题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static String match(int num) { switch (num) { case 1 : return "one"; case 2 : return "two"; case 3 : return "three"; case 4 : return "four"; case 5 : return "five"; case 6 : return "six"; case 7 : return "seven"; case 8 : return "eight"; case 9 : return "nine"; case 10 : return "ten"; case 11 : return "eleven"; case 12 : return "twelve"; case 13 : return "thirteen"; case 14 : return "fourteen"; case 15 : return "fifteen"; case 16 : return "sixteen"; case 17 : return "seventeen"; case 18 : return "eighteen"; case 19 : return "nineteen"; case 20 : return "twenty"; case 30 : return "thirty"; case 40 : return "forty"; case 50 : return "fifty"; case 60 : return "sixty"; case 70 : return "seventy"; case 80 : return "eighty"; case 90 : return "ninety"; case 0 : return ""; } return null; } public static String percent(int num) { // 用于匹配三位,返回三位数字的英文 String num_2_eng = ""; if (num >= 100) { // 获取百分位英文 int percent_num = num / 100; num_2_eng = num_2_eng + match(percent_num) + " hundred"; // 获取百分位英文表达 num = num % 100; if (num != 0) { // 百分位下有余数,需要加上“and” num_2_eng = num_2_eng + " and "; } else { // 百分位下没有余数,可以直接结束 return num_2_eng; } } // 获取百分位以下英文 String ret_eng = match(num); if (ret_eng != null) { // 表示对应匹配,可以直接结束 num_2_eng = num_2_eng + ret_eng; } else { // 未能匹配时,需要将十分位和个位分开匹配 int ten_num = num / 10 * 10; // 十分位 int one_num = num % 10; // 个位 num_2_eng = num_2_eng + match(ten_num); // 获取十分位英文 num_2_eng = num_2_eng + " " + match(one_num); // 获取个位英文 } return num_2_eng; } public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case String a = in.next(); int v = Integer.parseInt(a); int v_h = 0; // 用于保存高位,即每次去除低位后留下的高位(一次去除低位的三位) int v_l = v; // 用于保存低位 String a_2_eng = ""; // 保存对应的英文表达 if (v_l >= 1000000) { // v_h = v_l / 1000000; a_2_eng = a_2_eng + percent(v_h) + " million"; v_l = v_l % 1000000; if (v_l != 0) { // 有余数,需要加上" " a_2_eng = a_2_eng + " "; } } if (v_l >= 1000) { v_h = v_l / 1000; a_2_eng = a_2_eng + percent(v_h) + " thousand"; v_l = v_l % 1000; if (v_l != 0) { // 有余数,需要加上" " a_2_eng = a_2_eng + " "; } } v_h = v_l / 1000; v_l = v_l % 1000; a_2_eng = a_2_eng + percent(v_l); System.out.println(a_2_eng); } } }#学习笔记#