题目:
/*
- 3、题目要求:读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的每一位数字由对应的英文单词给出。
输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为"A+B=",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
输出格式:对每个测试用例输出1行,即A+B的值。
输入:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
输出:
3
90
96
*/
代码:
public class Three127 {
public static void main(String[] args) {
System.out.println("请输入测试数据,相邻两字符串有一个空格间隔,当A和B同时为0时输入结束:");//输出提示语句
Scanner sc = new Scanner(System.in); //获取控制台输入
String str = "";
ArrayList<String> strList = new ArrayList<String>();//动态数组
while(!str.trim().equals("zero + zero =")){
str = sc.nextLine();
strList.add(str); //添加至动态数组
}
sc.close();
//用map集合来实现当拿到这几个字母之后能找到对应的数字
Map<String, String> map = new HashMap<String,String>();
map.put("zero", "0");
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
map.put("four", "4");
map.put("five", "5");
map.put("six", "6");
map.put("seven", "7");
map.put("eight", "8");
map.put("nine", "9");
for (int i = 0; i < strList.size(); i++) { //每次对控制台中的一行进行操作
String s = strList.get(i); //用s来保存控制台中的一行
String strnum[] = s.trim().split(" ");
String strnum0 = strnum[0];
String strnum1 = strnum[1];
String strnum2 = strnum[2];
if(strnum.length<=3) {
System.out.println("此行输入有误请重新输入!");
}else {
String strnum3 = strnum[3];
String strnum4=" ";
if (strnum.length>4) {
strnum4 = strnum[4];
}
int num1; // 第一个加数
int num2; // 第二个加数
//这里的下标对应着strnum [] 数组中的下标
/* zero + zero =
* one + two =
* 0 1 2 3
* one + two five =
* 0 1 2 3 4
three four + five =
0 1 2 3 4
three four + five six =
0 1 2 3 4 5
*/
if (strnum1.equals("+")) { //第二个字符是“+”说明第一个加数是一位数
num1 =Integer.parseInt(map.get(strnum0));
if (strnum3.equals("=")) { //第四个字符是“=”,说明第二个加数是一位数
num2 = Integer.parseInt(map.get(strnum2));
}else { //否则,第二个加数是两位数位数
num2 = Integer.parseInt(map.get(strnum2)+map.get(strnum3)); //使用字符串拼接,再强转为int
}
if(num1==0&&num2==0) { //0+0不输出
}else {
System.out.println(num1+num2);
}
}else { //否则第一个加数是两位数
num1 = Integer.parseInt(map.get(strnum0)+map.get(strnum1));
if (strnum4.equals("=")) {
num2 = Integer.parseInt(map.get(strnum3));
}else {
num2 = Integer.parseInt(map.get(strnum3)+map.get(strnum4));
}
System.out.println(num1+num2);
}
}
}
}
}