题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.*;
public class Main {
public static void main(String[] args) {
// 数字到英语的基本映射
String[] ones = {
"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
};
String[] tens = {
"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
};
String[] units = {
"", "thousand", "million", "billion"
};
Scanner fzhinput = new Scanner(System.in);
long sz = fzhinput.nextLong(); // 从输入读取一个long型数字
if (sz == 0) {
System.out.println("zero");
return;
}
// 使用 StringBuilder 存储转换结果
StringBuilder result = new StringBuilder();
int unitIndex = 0;
// 将数字转换为英文的逻辑
while (sz > 0) {
int part = (int) (sz % 1000);
if (part > 0) {
StringBuilder partResult = new StringBuilder();
int hundred = part / 100;
int remainder = part % 100;
if (hundred > 0) {
partResult.append(ones[hundred]).append(" hundred");
if (remainder > 0 && part < 1000) {
partResult.append(" and ");
}
}
if (remainder < 20) {
partResult.append(ones[remainder]);
} else {
partResult.append(tens[remainder / 10]);
if (remainder % 10 > 0) {
partResult.append(" ").append(ones[remainder % 10]);
}
}
if (result.length() > 0) {
result.insert(0, " ");
}
result.insert(0, partResult.toString() + (units[unitIndex].isEmpty() ? "" : " " + units[unitIndex]));
}
sz /= 1000;
unitIndex++;
}
// 输出结果
System.out.println(result.toString().trim());
}
}
