Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加减_Java_Java.util.scanner_Delimiter - Fatal编程技术网

Java 加减

Java 加减,java,java.util.scanner,delimiter,Java,Java.util.scanner,Delimiter,我觉得我已经尝试了所有的东西,搜索了所有我知道要搜索的东西,我已经为此工作了6节课了 我正在尝试制作一个程序,它可以接受字符串输入,比如“6+6-3+2”,并且可以添加/减去所有内容以输出正确的答案。我让它一次处理加法或减法(不能做“6+6-3”之类的事情),而且任何数字之间也必须有一个空格。它也不能添加多位数,但我会担心,一旦它能够正确地添加/减去 因此,我认为我不了解扫描器和定界符是如何工作的(因为这是本章的内容),但我似乎在网上找不到任何有助于我理解我做错了什么的东西 这就是我到目前为止所

我觉得我已经尝试了所有的东西,搜索了所有我知道要搜索的东西,我已经为此工作了6节课了

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

因此,我认为我不了解扫描器和定界符是如何工作的(因为这是本章的内容),但我似乎在网上找不到任何有助于我理解我做错了什么的东西

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

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上发现的其他问题,更好的方法是使用index,但我在本章中介绍了一个使用字符串和扫描程序的shell程序


我错过了什么?我误解了什么/根本不理解什么?

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

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

请看这篇文章:或者这篇:好吧,我一直在寻找一种使用分隔符的方法,因为这正是我的教程/书所要寻找的,但是w/e。我想现在我将切换到正式的Java教程,因为它们看起来比我当前的教程(谁会“砰”的一声?)更清晰。还有一些我不知道的东西(但现在我知道了,因为我查了它来理解这个答案),比如数组。谢谢