2013-12-10 76 views
0

我觉得我已经试过了所有的东西,搜索了我知道要搜索的所有东西,而现在我一直在为此进行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); 
    } 
} 

基于我在计算器上,更好的方法来做到这一点是使用索引中找到的其他问题,但我在章用一个使用字符串和扫描器的shell程序设置我。

我在这里错过了什么?我误解/不理解的是什么?

+0

看到这个职位:http://stackoverflow.com/questions/4589951/parsing-an-arithmetic-expression-and-building-a树中的树或这一个:http://stackoverflow.com/questions/1432245/java-parse-a-mathematical-expression-given-as-a-string-and-returna-a-数字 –

回答

2

对于纯加法/减法,你可以做一些简单的像

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

好的答案,+1。 – Brian

+0

嗯,我正在寻找一种方法来使用分隔符,因为这是我的教程/书正在寻找,但w/e。我想我现在会转换到官方的Java教程,因为它们看起来比我当前的教程更清晰(谁将会是一个傻瓜?)。 此外,有些东西我不知道在那里(但现在我做了,因为我查找它了解这个答案),像数组。谢谢! – DaimyoKirby