Java 计算器不会接受用户输入

Java 计算器不会接受用户输入,java,input,calculator,Java,Input,Calculator,一直在尝试做一个简单的计算器加、减、除、乘。但它不允许我进入计算部分。它总是说“计算类型不正确”,即使我输入+,-,/,或“如何让扫描仪理解输入的+,-,/”?谢谢 import java.util.Scanner; public class Calculator { public void typeOfCalc(){ Scanner user_input = new Scanner(System.in); System.out.print("What

一直在尝试做一个简单的计算器加、减、除、乘。但它不允许我进入计算部分。它总是说“计算类型不正确”,即使我输入+,-,/,或“如何让扫描仪理解输入的+,-,/”?谢谢

import java.util.Scanner;

public class Calculator {

    public void typeOfCalc(){
        Scanner user_input = new Scanner(System.in);
        System.out.print("What type of calculation do you want? \n Addition? type '+' \n Subtraction? type '-' \n Division? type '/' \n or Multiplication type '*' \n");
        String calcType = user_input.next().trim();
       if (calcType != "+" || calcType != "*" || calcType != "/" || calcType != "-"){
           System.out.println("Incorrect type of calculation, try again \n");
           typeOfCalc();
       }

        else if (calcType == "+"){

            System.out.print("Chose your first number \n");
            int num1 = user_input.nextInt();
            System.out.print("Chose your second number \n");
            int num2 = user_input.nextInt();
            System.out.print(num1 + " + " + num2 + " = \n" + (num1 + num2) + "\n");
        }
        else if (calcType == "-"){

            System.out.print("Chose your first number \n");
            int num1 = user_input.nextInt();
            System.out.print("Chose your second number \n");
            int num2 = user_input.nextInt();
            System.out.print(num1 + " - " + num2 + " = \n" + (num1 - num2) + "\n");
        }
        else if (calcType == "/"){

            System.out.print("Chose your first number \n");
            int num1 = user_input.nextInt();
            System.out.print("Chose your second number \n");
            int num2 = user_input.nextInt();
            System.out.print(num1 + " / " + num2 + " = \n" + (num1 / num2) + "\n");
        }
        else if (calcType == "*"){

            System.out.print("Chose your first number \n");
            int num1 = user_input.nextInt();
            System.out.print("Chose your second number \n");
            int num2 = user_input.nextInt();
            System.out.print(num1 + " * " + num2 + " = \n" + (num1 * num2) + "\n");
        }
    }

}

您需要使用
.equals()
检查字符串相等性

所以
calcType.equals(“*”)
表示相等或
!calcType.equals(“*”
,检查它们是否不同


字符串是不可变的,因此当您使用
==
时,它是在检查内存中的字符串是否相同,而不是检查字符串的实际内容。您需要使用
.equals()
来检查字符串是否相等

所以
calcType.equals(“*”)
表示相等或
!calcType.equals(“*”
,检查它们是否不同


字符串是不可变的,因此当您使用
==
时,它会检查内存中的字符串是否相同,而不是检查字符串的实际内容一旦调整代码以遵循@redFIVE的建议(将
!=
替换为
!myVar.equals(str)
),请确保将ORs(
|
)替换为ANDs(
&&

考虑以下几点:

如果(!calcType.equals(“+”)| |!calcType.equals(“*”| |…)

如果输入为
“+”
,条件仍将通过,因为
calcType
不等于
“*”
,并且逻辑计算结果为TRUE

使用AND:
时,如果(!calcType.equals(“+”&&!calcType.equals(“*”&…)
您应该会看到预期的结果



但是,当前代码的主要问题是由于您误用了
!=
来比较
字符串。解决这个问题,您至少可以使用调试器来查看上述逻辑可能失败或产生意外结果的原因。

一旦按照@redFIVE的建议调整代码(将
!=
替换为
!myVar.equals(str)
)确保将ORs(
|
)替换为ANDs(
&&

考虑以下几点:

如果(!calcType.equals(“+”)| |!calcType.equals(“*”| |…)

如果输入为
“+”
,条件仍将通过,因为
calcType
不等于
“*”
,并且逻辑计算结果为TRUE

使用AND:
时,如果(!calcType.equals(“+”&&!calcType.equals(“*”&…)
您应该会看到预期的结果



但是,当前代码的主要问题是由于您误用了
!=
来比较
字符串。
解决了这一问题,您至少可以使用调试器来查看上述逻辑可能失败或产生意外结果的原因。

关于下一个问题,请参阅。不起作用,谢谢您的下一个问题,请参阅。不起作用,谢谢thoughcool,因此我还需要以相同的方式生成“else-if”语句。calcType.equals(“+”)。谢谢!很酷,因此我还需要以相同的方式生成“else-if”语句。calcType.equals(“+”)。谢谢!