找到不兼容的类型:java.lang.String

找到不兼容的类型:java.lang.String,java,switch-statement,javac,Java,Switch Statement,Javac,我正在学习java,我编写了这个程序,它在我的大学计算机上成功编译,但没有在我的家用电脑上编译。有人能帮我吗 import java.util.Scanner; public class Calculator{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("Ple

我正在学习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;
    }
    
    
    
    
}
这就是我得到的错误:

Calculator.java:23:不兼容类型

找到:java.lang.String

必填项:int

           switch (operator){

                   ^
1错误


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;
    ...

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;
    ...

在我当前的java版本中,我可以使用它吗?我使用的是jdk1.6.0_25@CoderMax:不使用字符串,您必须将代码改为使用
char
(可以,因为
开关中使用的所有字符串都是一个字符长)。但你为什么要这么做?您显然可以访问“net”,最新的JDK是免费的。所以下载并使用它。如果需要快速解决方案,请使用开关(operator.hashCode())。(当然,每种情况下都有“*”.hashCode())还有其他方法可以解决这个特殊问题。但是如果你在大学里有Java7,在家里有Java6,你会继续遇到麻烦。您做出了正确的决定。我是否可以在当前的java版本中使用它?我使用的是jdk1.6.0_25@CoderMax:不使用字符串,您必须将代码改为使用
char
(可以,因为
开关中使用的所有字符串都是一个字符长)。但你为什么要这么做?您显然可以访问“net”,最新的JDK是免费的。所以下载并使用它。如果需要快速解决方案,请使用开关(operator.hashCode())。(当然,每种情况下都有“*”.hashCode())还有其他方法可以解决这个特殊问题。但是如果你在大学里有Java7,在家里有Java6,你会继续遇到麻烦。你做出了正确的决定。