A+B

讀入兩個小於100的正整數A和B,計算A+B.

需要注意的是:A和B的每一位數字由對應的英文單詞給出.

測試輸入包含若干測試用例,每個測試用例佔一行,格式爲"A + B =",相鄰兩字符串有一個空格間隔.當A和B同時爲0時輸入結束,相應的結果不要輸出.

輸入:

three four + five six =
zero seven + eight nine =
zero + zero =

輸出:

90
96
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class AB {
	private Queue<Integer> queue = new LinkedList<Integer>();
	private int a=0; 
	private int b=0;
	private boolean flag = false;
	public static void main(String [] args) {
		Scanner can = new Scanner(System.in);
		AB ab = new AB();
		while(can.hasNext()) {
			String line = can.nextLine();
			ab.compute(line);
			if(ab.flag){
				System.out.println("計算結束");
				break;
			}
		}
	}
	public void compute(String line) {
		a=0;
		b=0;
		if(line == null)
			return;
		String [] str = line.split(" ");                       //通過空格將數組分割開來
		queue.clear();                                          //隊列清空,防止保存上一次輸入的元素
		for(int i=0;i<str.length;i++) {
			if("+".equals(str[i])) {
				while(!queue.isEmpty()) {
					a = a*10 + queue.poll();            //把隊列中的值賦給a
				}
			}else if("=".equals(str[i])) {
				while(!queue.isEmpty()) {
					b = b*10+queue.poll();
				}
			}else {
				int temp = stringToint(str[i]);
				if(temp == -1) {
					System.out.println("輸入有誤");
					return;
				}
				queue.offer(temp);
			}
		}
		if(!queue.isEmpty()){                              //判斷輸入是否標準
			System.out.println("輸入有誤");
			return;
		}
		if(a==0 && b==0){                                //判斷是否結束輸入
			flag = true;
		}else {
			int c = a+b;
			System.out.println(c);
		}
	}
	public int stringToint(String str) {
		if("zero".equals(str)){
			return 0;
		}else if("one".equals(str)){
			return 1;
		}else if("two".equals(str)){
			return 2;
		}else if("three".equals(str)) {
			return 3;
		}else if("four".equals(str)) {
			return 4;
		}else if("five".equals(str)) {
			return 5;
		}else if("six".equals(str)) {
			return 6;
		}else if("seven".equals(str)){
			return 7;
		}else if("eight".equals(str)) {
			return 8;
		}else if("nine".equals(str)) {
			return 9;
		}else {
			return -1;
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章