3、题目要求:读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的每一位数字由对应的英文单词给出。 输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为“A+B=“,相邻两

16 篇文章 3 订阅
9 篇文章 1 订阅

题目:

/*

  •     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);
				}
			}
		}

	}

}

运行结果:

在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值