我觉得我已经尝试了所有东西,搜索了我所知道的所有搜索内容,而且我现在已经开始研究大约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程序设置。
我在这里缺少什么?我误解/不理解的是什么?
答案 0 :(得分:2)
对于简单的加法/减法,你可以做一些简单的事情,比如
String[] nums = s.replaceAll(" ", "").replaceAll("\\+", " ")
.replaceAll("-", " -").split(" ");
int res = 0;
for (String n : nums) {
if (!n.isEmpty())
res += Integer.parseInt(n);
}