【问题标题】:Add and Subtract加减法
【发布时间】:2013-12-10 18:54:15
【问题描述】:

我觉得我已经尝试了所有东西,搜索了所有我知道要搜索的东西,并且我已经为此工作了大约 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 程序。

我在这里缺少什么?我误解/完全不理解什么?

【问题讨论】:

标签: java java.util.scanner delimiter


【解决方案1】:

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

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

【讨论】:

  • 好吧,我一直在寻找一种使用分隔符的方法,因为这是我的教程/书籍正在寻找的,但是 w/e。我想我现在将切换到官方的 Java 教程,因为它们看起来比我当前的教程更清晰(谁会笨拙?)。此外,还有一些我不知道的东西(但现在我知道了,因为我查阅了它以理解这个答案),比如数组。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2014-12-24
  • 2019-10-19
相关资源
最近更新 更多