添加和减去

时间:2013-12-10 18:54:15

标签: java java.util.scanner delimiter

我觉得我已经尝试了所有东西,搜索了我所知道的所有搜索内容,而且我现在已经开始研究大约6个班级了。

我正在尝试创建一个接受字符串输入的程序,如“6 + 6 -3+ 2”,并且可以添加/减去所有内容以输出正确的答案。我让它一次使用加法或减法(不能做“6 + 6 - 3”之类的任何事情)并且在任何数字之间也必须有空格。它也不能添加多位数字,但一旦它可以正确地加/减,我会担心它。

所以我不认为我理解Scanner和分隔符是如何工作的,(因为这就是本章的内容),但我似乎无法在网上找到任何有助于我理解我是什么的东西做错了。

这是我到目前为止所做的:

package addEmUp;

import java.util.*;

public class TesterShell {
    public static void main(String[] args){
        Scanner kbIn = new Scanner(System.in);

        System.out.print("Enter some addition/subtraction problem: ");
        String s = kbIn.nextLine();

        Scanner numChecker = new Scanner(s);
        Scanner valueChecker = new Scanner(s);

        numChecker.useDelimiter("\\s*\\+\\s*|\\s*\\-\\s*");
        int sum = 0;

        while(numChecker.hasNext()){
            if(valueChecker.next().equals("-")){
                sum = sum - numChecker.nextInt();
            }
            else{
                sum = sum + numChecker.nextInt();
            }
            System.out.println(sum); //Just for checking what's going on, will remove in the end
        }

        System.out.println("Sum = " + sum);
    }
}

根据我在StackOverflow上发现的其他问题,更好的方法是使用索引,但是我正在使用字符串和扫描程序为shell程序设置。

我在这里缺少什么?我误解/不理解的是什么?

1 个答案:

答案 0 :(得分:2)

对于简单的加法/减法,你可以做一些简单的事情,比如

String[] nums = s.replaceAll(" ", "").replaceAll("\\+", " ")
        .replaceAll("-", " -").split(" ");
int res = 0;
for (String n : nums) {
    if (!n.isEmpty())
        res += Integer.parseInt(n);
}