2015-03-27 8 views
1

Я изучаю java, и я написал эту программу, и она была скомпилирована успешно на моем компьютере в колледже, но не компилировалась на моем домашнем pc.can, кто-нибудь мне помог?несовместимых типов найдено: java.lang.String

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 ошибка

ответ

7

Использование switch на String было представлено на 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; 
    ... 
+0

есть в любом случае я могу использовать это на моей текущей версии Java? – CoderMax

+0

Я использую jdk1.6.0_25 – CoderMax

+3

@CoderMax: Не со строками, вам нужно будет изменить код, чтобы вместо него использовать символ 'char' (он может, поскольку все строки, используемые в' switch', имеют один символ) , Но зачем вам это нужно? У вас явно есть доступ к «сети», и последний JDK доступен бесплатно. Поэтому загрузите его и используйте. –

Смежные вопросы