自己做的一种计算器算法的设计..不知道代码是否有bug

 1 package Test;
 2 import java.util.Scanner;
 3 /**
 4  * 设计一个计算器,实现多行输入,并分别输出结果
 5  * 输入:
 6  *     4/2+5+9*7-9
 7  *  3*2+8/2-7+2
 8  *  3+8*4-5+3+1
 9  *  9/4/2+7-6-1
10  * 输出:
11  *     61
12  *  5
13  *  34
14  * @author litaiqing
15  *
16  */
17 public class Test {
18     public static void main(String[] args) {
19         Scanner scanner = new Scanner(System.in);
20         while(scanner.hasNext()){
21             String in = scanner.nextLine();
22             System.out.println(calc(in));
23         }
24     }
25     public static int calc(String in){
26         int result = 1;
27         if(in.contains("+")){
28             String[] nums = in.split("\\+");
29             result = calc(nums[0]);
30             for(int i = 1; i < nums.length; i++){
31                 result += calc(nums[i]);
32             }
33         }else if(in.contains("-")){
34             String[] nums = in.split("\\-");
35             result = calc(nums[0]);
36             for(int i = 1; i < nums.length; i++){
37                 result -= calc(nums[i]);
38             }
39         }else if(in.contains("*")){
40             String[] nums = in.split("\\*");
41             result = calc(nums[0]);
42             for(int i = 1; i < nums.length; i++){
43                 result *= calc(nums[i]);
44             }
45         }else if(in.contains("/")){
46             String[] nums = in.split("/");
47             result = calc(nums[0]);
48             for(int i = 1; i < nums.length; i++){
49                 result /= calc(nums[i]);
50             }
51         }else{
52             result = Integer.parseInt(in);
53         }
54         return result;
55     }
56 }

输出

4/2+5+9*7-9
61
3*2+8/2-7+2
5
3+8*4-5+3+1
34
9/4/2+7-6-1
1

posted @ 2015-09-18 00:58  登高一呼  阅读(218)  评论(0编辑  收藏  举报