题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
String[] belowTen=new String[]{"zero","one","two","three","four","five","six","seven","eight","nine"};
String[] tenToTwenty=new String[]{"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
String[] dozen=new String[]{"","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//构建两个数组根据索引输出英文数值
//每次提取三位数,三位为一组进行解析
Long num=in.nextLong();
String sNum=String.valueOf(num);
if(sNum.length()>0&&sNum.length()<=3){
readNum(sNum,true);
}
if(sNum.length()>3&&sNum.length()<=6){
String s1=sNum.substring(0,sNum.length()-3);
String s2=sNum.substring(sNum.length()-3,sNum.length());
readNum(s1,false);
System.out.print(" thousand ");
readNum(s2,true);
}
if(sNum.length()>6&&sNum.length()<=9){
String s1=sNum.substring(0,sNum.length()-6);
String s2=sNum.substring(sNum.length()-6,sNum.length()-3);
String s3=sNum.substring(sNum.length()-3,sNum.length());
readNum(s1,false);
System.out.print(" million ");
readNum(s2,false);
System.out.print(" thousand ");
readNum(s3,true);
}
}
private static void readNum(String s,boolean isBelowThrousand){
Main m=new Main();
if(s.length()==3){
int single=Integer.parseInt(String.valueOf(s.charAt(2)));
int ten=Integer.parseInt(String.valueOf(s.charAt(1)));
int hundred=Integer.parseInt(String.valueOf(s.charAt(0)));
String result=new String();
if(ten==1){
result+=(hundred==0?"":m.belowTen[hundred]+" hundred"+((ten!=0||single!=0)?" and":""))+((ten==0?"":((hundred==0?"":" ")+m.tenToTwenty[single])));
}else{
String temp=(ten==0?"":" "+m.dozen[ten]);
result+=(hundred==0?"":m.belowTen[hundred]+" hundred"+((ten!=0||single!=0)?" and":""))+((ten==0?"":((hundred==0?"":" ")+m.dozen[ten])))+(single==0?"":((hundred==0&&ten==0)?"":" ")+m.belowTen[single]);}
System.out.print(result);
}
if(s.length()==2){
int single=Integer.parseInt(String.valueOf(s.charAt(1)));
int ten=Integer.parseInt(String.valueOf(s.charAt(0)));
System.out.print(m.dozen[ten]+(single==0?"":" "+m.belowTen[single]));
}
if(s.length()==1){
int single=Integer.parseInt(String.valueOf(s.charAt(0)));
System.out.print(m.belowTen[single]);
}
}
}

