运行 使用此基本计算器时收到错误消息

Getting error message while running this basic calculator

我是 Java 的新手(实际上只做了大约 3 天)。我对 Python 有基本的了解,因此决定学习 Java。我今天在 Java 中制作了我的第一个计算器程序,并使用了与我在 Python 中的程序相同的程序设置。问题是,每次我 运行 它时我都会收到一条错误消息,特别是当它询问我想在第 16 行使用什么标志时。我知道这很基本,我确定我的问题是这样愚蠢,但我只是习惯了语法和东西,所以我想知道我做错了什么。这是代码:

    import java.util.Scanner;

    class Experiment {
        public static void main(String[] args){
            double num1, num2, ans = 0;
            String sign;
            Scanner num = new Scanner(System.in);

            System.out.print("Enter first number: ");
            num1 = num.nextDouble();

            System.out.print("+, -, x or /? ");
            sign = num.nextLine();

            System.out.print("Enter second number: ");
            num2 = num.nextDouble();

            if(sign == "+"){
                System.out.print(num1);
                System.out.print("+");
                System.out.print(num2);
                System.out.print("=");
                System.out.print(num1 + num2);
           }
           if(sign == "-"){
                System.out.print(num1);
                System.out.print("=");
                System.out.print(num2);
                System.out.print("=");
                System.out.print(num1 - num2);
           }
           if(sign == "x"){
                System.out.print(num1);
                System.out.print("x");
                System.out.print(num2);
                System.out.print("=");
                System.out.print(num1 * num2);
           }
           if(sign == "/"){
                System.out.print(num1);
                System.out.print("/");
                System.out.print(num2);
                System.out.print("=");
                System.out.print(num1 + num2);
           } else {
                System.out.print("That is not a valid input");
           }

           }    
}

一些事情: 在第 13 行你想要

sign = num.next();

if 块中,您想对字符串使用 equals 方法,而不是等号运算符,即您想要 sign.equals("+") 而不是 sign == "+" 正如您将看到的那样,它们解析为不同的值。

此外,在您特定的一组 if 语句中,您想从 if 开始,然后接下来的 3 个 if 块应该是 else if

这是因为最终的 else 语句将始终触发,除非 sign.equals("/") 解析为真。最后的 else 语句仅与其正上方的 if 相关,与其他 if 语句无关。

import java.util.Scanner;

    class Experiment {
        public static void main(String[] args){
            double num1, num2, ans = 0;
            String sign;
            Scanner num = new Scanner(System.in);

            System.out.print("Enter first number: ");
            num1 = num.nextDouble();

            System.out.print("Enter +, -, x or /: ");
            sign = num.next();

            System.out.print("Enter second number: ");
            num2 = num.nextDouble();

            if(sign.equals("+")){
                System.out.print(num1);
                System.out.print(" + ");
                System.out.print(num2);
                System.out.print(" = ");
                System.out.print(num1 + num2);
           }
           else if(sign.equals("-")){
                System.out.print(num1);
                System.out.print(" - ");
                System.out.print(num2);
                System.out.print(" = ");
                System.out.print(num1 - num2);
           }
           else if(sign.equals("x")){
                System.out.print(num1);
                System.out.print(" x ");
                System.out.print(num2);
                System.out.print(" = ");
                System.out.print(num1 * num2);
           }
           else if(sign.equals("/")){
                System.out.print(num1);
                System.out.print(" / ");
                System.out.print(num2);
                System.out.print(" = ");
                if (num2 != 0.0)
                    System.out.print(num1 / num2);
                else
                    System.out.print("Cannot divide by 0");
           } else {
                System.out.print("That is not a valid input");
           }

     }    
}

在这里输入第一个数字后,用户将按回车键,因此您的符号 = num.nextLine() 将读取该输入,因此您必须使用 num.next()。您的所有条件都应该在 if...else if...else 中,要比较您应该使用的字符串 sign.equals("+")