题解 | #学英语#
学英语
http://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
import java.util.*;
import static java.lang.System.out;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Map<Character,String> map1 = new HashMap<Character,String>(){{
put('1',"one");
put('2',"two");
put('3',"three");
put('4',"four");
put('5',"five");
put('6',"six");
put('7',"seven");
put('8',"eight");
put('9',"nine");
put('0',"");
}};
Map<Character,String> map2 = new HashMap<Character,String>(){{
put('2',"twenty");
put('3',"thirty");
put('4',"forty");
put('5',"fifty");
put('6',"sixty");
put('7',"seventy");
put('8',"eighty");
put('9',"ninety");
}};
Map<Character,String> map3 = new HashMap<Character,String>(){{
put('0',"ten");
put('1',"eleven");
put('2',"twelve");
put('3',"thirteen");
put('4',"fourteen");
put('5',"fifteen");
put('6',"sixteen");
put('7',"seventeen");
put('8',"eighteen");
put('9',"nineteen");
}};
//最多只有9位,那么将str分成三段放入list
while(sc.hasNextLine()){
ArrayList<String> list = new ArrayList<>();
String str = sc.nextLine();
String cur = "";
int len = str.length();
if(len >= 7 && len <= 9){
cur = str.substring(0, len - 6);
list.add(cur);
str = str.substring(len - 6, len);
}
len = str.length();
if(len >= 4 && len <= 6){
cur = str.substring(0,len - 3);
list.add(cur);
str = str.substring(len - 3, len);
}
list.add(str);
//逐一取出
while(list.size() > 0){
char[] c = list.remove(0).toCharArray();
if(c.length == 3){//如果是3位
out.print(map1.get(c[0]));
if(c[0] != '0') out.print(" hundred");//第一个数字不是0,才有hundred
//处理后两位
if(c[1] != '0' || c[2] != '0'){//第二三位至少一个不为零
if(c[0] != '0') out.print(" and ");//且第一个数字不是0,才有and
//第二位为1,ten~nineteen
if(c[1] == '1') out.print(map3.get(c[2]));
//第二位为0第三位不为0
else if(c[1] == '0') out.print(map1.get(c[2]));
//第二位不为0和1,第三位为0,twenty~ninety
else if(c[2] == '0') out.print(map2.get(c[1]));
//第二位不为0和1,第三位不为0,多一个空格twenty one
else{
out.print(map2.get(c[1]));
out.print(" "+map1.get(c[2]));
}
}
}
if(c.length == 2){//如果是2位
if(c[0] == '1') out.print(map3.get(c[1]));
else if(c[1] == '0') out.print(map2.get(c[0]));
else{
out.print(map2.get(c[0]));
out.print(" "+map1.get(c[1]));
}
}
if(c.length == 1){//如果是1位
out.print(map1.get(c[0]));
}
if(list.size() == 2){//list还剩2段,说明当前单位是million
out.print(" million ");
}else if(list.size() == 1)//list还剩1段,说明当前单位是thousand
out.print(" thousand ");
}
out.println();
}
}
}
三奇智元机器人科技有限公司公司福利 82人发布