题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {//写了4个小时的屎山代码,请慎重查看
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String s = scanner.nextLine();
String[] strings = spThree(s);
// System.out.println(Arrays.toString(strings));
ArrayList<String> sgood = new ArrayList<>();
String zs[]=new String[]{"","thousand","million","billion"};
for (int i = 0; i <strings.length; i++) {
String s1 = nTl(strings[i]);
// System.out.println(s1);
if (s1.equals(" ")||s1.equals("")){
continue;
}
sgood.add(s1+" "+zs[i]);
}
// System.out.println(sgood);
String se="";
for (int i = sgood.size()-1; i >=0; i--) {
se=se+sgood.get(i)+" ";
}
System.out.println(se);
}
}
public static String[] spThree(String s) {//拆分数字方法
char[] cy = s.toCharArray();
String ss = "";
for (int i = cy.length - 1; i >= 0; i--) {
ss = ss + cy[i];
}
ArrayList<String> st = new ArrayList<>();
for (int i = 0; i < ss.length(); i++) {
String[] split = ss.split("");
if ((i + 1) % 3 == 0) {
st.add(split[i]);
st.add(" ");
} else {
st.add(split[i]);
}
}
String s1 = "";
for (int i = 0; i < st.size(); i++) {
s1 = s1 + st.get(i);
}
String[] split = s1.split(" ");
for (int i = 0; i < split.length; i++) {
String s2 = split[i];
String s3 = "";
String[] split1 = s2.split("");
for (int j = split1.length - 1; j >= 0; j--) {
s3 = s3 + split1[j];
}
split[i] = s3;
}
return split;
}
public static String nTl(String s) {//分类
String s1 = "";
String s2 = "";
String s3 = "";
if (s.length() == 1) {
switch (s) {
case "0":
s1 = "zero";
break;
case "1":
s1 = "one";
break;
case "2":
s1 = "two";
break;
case "3":
s1 = "three";
break;
case "4":
s1 = "four";
break;
case "5":
s1 = "five";
break;
case "6":
s1 = "six";
break;
case "7":
s1 = "seven";
break;
case "8":
s1 = "eight";
break;
case "9":
s1 = "nine";
break;
}
return s1;
} else if (s.length() == 2||(s.length()==3 && String.valueOf(s.charAt(0)).equals("0"))) {
if (s.length()==3){
s=s.substring(1);
}
if (String.valueOf(s.charAt(0)).equals("1")) {
switch (String.valueOf(s.charAt(1))) {
case "0":
s2 = "ten";
break;
case "1":
s2 = "eleven";
break;
case "2":
s2 = "twelve";
break;
case "3":
s2 = "thirteen";
break;
case "4":
s2 = "fourteen";
break;
case "5":
s2 = "fifteen";
break;
case "6":
s2 = "sixteen";
break;
case "7":
s2 = "seventeen";
break;
case "8":
s2 = "eighteen";
break;
case "9":
s2 = "nineteen";
break;
}
return s2;
} else {
switch (String.valueOf(s.charAt(0))) {
case "2":
s2 = "twenty";
break;
case "3":
s2 = "thirty";
break;
case "4":
s2 = "forty";
break;
case "5":
s2 = "fifty";
break;
case "6":
s2 = "sixty";
break;
case "7":
s2 = "seventy";
break;
case "8":
s2 = "eighty";
break;
case "9":
s2 = "ninety";
break;
}
switch (String.valueOf(s.charAt(1))) {
case "1":
s1 = "one";
break;
case "2":
s1 = "two";
break;
case "3":
s1 = "three";
break;
case "4":
s1 = "four";
break;
case "5":
s1 = "five";
break;
case "6":
s1 = "six";
break;
case "7":
s1 = "seven";
break;
case "8":
s1 = "eight";
break;
case "9":
s1 = "nine";
break;
}
if (s1.equals("")){
return s2;
}
if (s2.equals("")){
return s1;
}
return s2+" "+s1;
}
} else if (s.length() == 3) {
if (!String.valueOf(s.charAt(0)).equals("0")) {
switch (String.valueOf(s.charAt(0))) {
case "1":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "one hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "one hundred";
}
break;
case "2":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "two hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "two hundred";
}
break;
case "3":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "three hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "three hundred";
}
break;
case "4":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "four hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "four hundred";
}
break;
case "5":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "five hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "five hundred";
}
break;
case "6":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "six hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "six hundred";
}
break;
case "7":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "seven hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "seven hundred";
}
break;
case "8":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "eight hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "eight hundred";
}
break;
case "9":
if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
s3 = "nine hundred and";
}
if (Integer.valueOf(s)%100==0){
s3 = "nine hundred";
}
}
if (String.valueOf(s.charAt(1)).equals("1")) {
switch (String.valueOf(s.charAt(2))) {
case "0":
s2 = "ten";
break;
case "1":
s2 = "eleven";
break;
case "2":
s2 = "twelve";
break;
case "3":
s2 = "thirteen";
break;
case "4":
s2 = "fourteen";
break;
case "5":
s2 = "fifteen";
break;
case "6":
s2 = "sixteen";
break;
case "7":
s2 = "seventeen";
break;
case "8":
s2 = "eighteen";
break;
case "9":
s2 = "nineteen";
break;
}
return s3+" "+s2;
} else {
switch (String.valueOf(s.charAt(1))) {
case "2":
s2 = "twenty";
break;
case "3":
s2 = "thirty";
break;
case "4":
s2 = "forty";
break;
case "5":
s2 = "fifty";
break;
case "6":
s2 = "sixty";
break;
case "7":
s2 = "seventy";
break;
case "8":
s2 = "eighty";
break;
case "9":
s2 = "ninety";
break;
}
switch (String.valueOf(s.charAt(2))) {
case "1":
s1 = "one";
break;
case "2":
s1 = "two";
break;
case "3":
s1 = "three";
break;
case "4":
s1 = "four";
break;
case "5":
s1 = "five";
break;
case "6":
s1 = "six";
break;
case "7":
s1 = "seven";
break;
case "8":
s1 = "eight";
break;
case "9":
s1 = "nine";
break;
}
if (!s2.equals("0")&&!s2.equals("")) {
return s3 + " " + s2 + " " + s1;
} else if (s1.equals("")) {
return s3;
} else {
return s3 + " " + s1;
}
}
}
}
return null;
}
}
