Java 编写简单命令行计算器时遇到问题

Java 编写简单命令行计算器时遇到问题,java,Java,我有一些条件: 仅整数(负数和正数) 添加(+) 减法(-) (=)等号停止并显示结果 我做了,但是有一些问题。。 问题是,当我首先输入命令行:127+3,它是OK的,但当我输入-时,它停止并说: Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:

我有一些条件:

  • 仅整数(负数和正数)
  • 添加(+)
  • 减法(-)
  • (=)等号停止并显示结果
  • 我做了,但是有一些问题。。 问题是,当我首先输入命令行:
    127+3
    ,它是OK的,但当我输入
    -
    时,它停止并说:

    Exception in thread "main" java.util.InputMismatchException
      at java.util.Scanner.throwFor(Scanner.java:840)
      at java.util.Scanner.next(Scanner.java:1461)
      at java.util.Scanner.nextDouble(Scanner.java:2387)
      at Calculator2.main(Calculator2.java:14)
    
    我的代码:

    import java.util.*;
    import java.io.*; //just for insurance
    
    public class Calculator2 {
        public static void main(String[] args) throws Exception {
            System.out.println("Welcome to the Best Calculator");
            Scanner sc = new Scanner(System.in);
            double first, second, ans = 0;
            char operand;
            while (true) {
                first = sc.nextDouble();
                operand = sc.next().charAt(0);
                second = sc.nextDouble();
                if (operand != '=') {
                    switch (operand) {
                    case '+':
                        ans += (first + second);
                        break;
                    case '-':
                        ans -= (first - second);
                        break;
                    }
                } else if (operand == '=') {
                    System.out.println("The result is: " + ans);
                    System.exit(0);
                }
            }
        }
    }
    
    一些例子:

    欢迎使用最佳计算器
    127+3
    -
    40
    =
    结果是:90


    需要帮助,我希望有很多好人)

    你真的应该重新表述你的标题“我做到了,但有一些问题…”什么问题?编辑的标题。仍然不理想,但我能做的最好的事情是,缺乏关于实际问题的信息。如果是多余的,那么您的
    else。一个简单的
    else
    就足够了。例外情况是,当您真正想要的是隐式使用前面的答案作为
    first
    时,您需要另一个
    first
    值。尝试将
    的声明首先移动到循环外部。得到答案后,首先将该值存储回
    中。