发现不兼容的类型:java.lang.String

Cod*_*Max 1 java javac switch-statement

我正在学习java,我编写了这个程序,它在我的大学计算机上成功编译,但没有在我的家用电脑上编译.任何人帮助我吗?

import java.util.Scanner;

public class Calculator{

    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Please Enter 2 Values");

        int userInput1 = input.nextInt();
        int userInput2 = input.nextInt();

        System.out.println("Please Enter an Operation");

        String operator = input.next();
        if(operator == null){
            return;
        }

        int answer = 0;

        switch (operator){
            case "+":
                answer = Add(userInput1,userInput2);    
            break;
            case "*":
                answer = Multiply(userInput1,userInput2);       
            break;          
            case "-":
                answer = Subtract(userInput1,userInput2);       
            break;          
            case "/":
                answer = Divide(userInput1,userInput2);     
            break;          
            default:
                System.out.println("Invalid Operator");
                System.exit(0);
            break;
        }


        System.out.println("The answer is " + answer);

    }

    public static int Add(int num1, int num2)
    {
        return num1 + num2;
    }


    public static int Subtract(int num1, int num2)
    {
        return num1 - num2;
    }

    public static int Multiply(int num1, int num2)
    {   
        return num1 * num2;
    }


    public static int Divide(int num1, int num2)
    {   
        return num1 / num2;
    }




}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Calculator.java:23:不兼容的类型

发现:java.lang.String

必需:int

           switch (operator){

                   ^
Run Code Online (Sandbox Code Playgroud)

1错误

man*_*uti 7

使用switchString的Java 7中引入确保您使用JDK7 +其他机器上编译程序.

如评论中所述,如果由于某种原因无法升级JDK,则可以使用char:

String operator = input.next();
if(operator == null || operator.isEmpty()) {
   return;
}
int answer = 0;
switch (operator.charAt(0)) {
    case '+':
        answer = Add(userInput1, userInput2);
        break;
    case '*':
        answer = Multiply(userInput1, userInput2);
        break;
    ...
Run Code Online (Sandbox Code Playgroud)

  • @CoderMax:不使用字符串,你必须改变代码使用`char`(它可以,因为`switch`中使用的所有字符串都是一个字符长).但你为什么要这样做?您可以清楚地访问'net,并且可以免费获得最新的JDK.所以下载并使用它. (3认同)
  • 还有其他方法可以解决这个特定问题.但是如果你在大学里拥有Java 7而在家里拥有Java 6,那么你将继续遇到麻烦.你做出了正确的决定. (2认同)