Description
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Output
3
90
96
Code
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String ,String> hashMap = new HashMap<>();
hashMap.put("zero","0");
hashMap.put("one","1");
hashMap.put("two","2");
hashMap.put("three","3");
hashMap.put("four","4");
hashMap.put("five","5");
hashMap.put("six","6");
hashMap.put("seven","7");
hashMap.put("eight","8");
hashMap.put("nine","9");
while(sc.hasNext()){
String str = sc.nextLine();
if(str.equals("zero + zero =")){
break;
}
String [] s = str.split(" ");
boolean flag = false;
StringBuffer stringBuffer1 = new StringBuffer();
StringBuffer stringBuffer2 = new StringBuffer();
for (int i = 0; i < s.length-1; i++) {//"="不必在循环内
if(hashMap.containsKey(s[i])&&!flag){
stringBuffer1.append(hashMap.get(s[i]));
}else if(!hashMap.containsKey(s[i])){//“+”,区分numberone与numbertwo
flag = true;
continue;
}else if(hashMap.containsKey(s[i])&&flag){
stringBuffer2.append(hashMap.get(s[i]));
}
}
int number1 = Integer.valueOf(stringBuffer1.toString());
int number2 = Integer.valueOf(stringBuffer2.toString());
System.out.println(number1 + number2);
}
sc.close();
hashMap.clear();
}
}