package offer;
import java.util.ArrayList;
import java.util.Scanner;
/*
*
题目描述:
读入两个小于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 =
*/
public class AandB {
public static void main(String[] args) {
ArrayList<String> arr = new ArrayList<String>();
Scanner scan = new Scanner(System.in);
int arrSize=0;
String str=null;
for(int i=0;i<100;i++){
str=scan.nextLine();
if(str.equals("zero + zero =")){
break;
}
arr.add(str);
arrSize++;
}
//输出样例的结果
for(int i=0;i<arrSize;i++){
System.out.println(qie(arr.get(i)));
}
}
//将输入的字符串分割为多个单词
private static int qie(String str){
if(str.equals("zero + zero =")){
return 0;
}
str = str.replaceAll("=", "");
int a=0;
int b=0;
int begin=0;//截取子串的开始位置
int and=0; //用于记录+的位置
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='+'){
and=i;
}
}
for(int i = 0;i<str.length();i++){
if(str.charAt(i)==' '){
int s1=change(str.substring(begin, i));
if(i<=and)
a=a*10+s1;
if(s1>=0&&i>and)
b=b*10+s1;
begin=i+1;
}
}
return a+b;
}
//用于将英文数字转换为阿拉伯数字
private static int change(String num){
if(num.equals("one")){
return 1;
}else if(num.equals("two")){
return 2;
}else if(num.equals("three")){
return 3;
}else if(num.equals("four")){
return 4;
}else if(num.equals("five")){
return 5;
}else if(num.equals("six")){
return 6;
}else if(num.equals("seven")){
return 7;
}else if(num.equals("eight")){
return 8;
}else if(num.equals("nine")){
return 9;
}else if(num.equals("zero")){
return 0;
}
return -1;
}
}
样例输入:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
样例输出:
3
90
96
读入两个小于100的正整数A和B,计算A+B.A和B的每一位数字由对应的英文单词给出.
最新推荐文章于 2021-05-18 15:27:42 发布