读入两个小于100的正整数A和B,计算A+B.A和B的每一位数字由对应的英文单词给出.

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值