题解 | #学英语#
学英语
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);
}
}
}
#学习笔记#
腾讯成长空间 1169人发布