2013-04-25 25 views
1

有沒有人知道爲什麼當我運行這個Java應用程序,它不斷提供默認值,而不是正確的答案?我的java代碼有什麼問題,因爲它一直用默認的答案回答?

主要的代碼如下:

import java.util.Scanner; 

public class mainClass { 
public static void main(String[] args){ 

    Scanner scanInt = new Scanner(System.in); 
    Scanner scanString = new Scanner(System.in); 

    System.out.println("Calculator"); 
    System.out.println("Enter 1st number:"); 
    int x = scanInt.nextInt(); 

    System.out.println("Enter opperation:"); 
    String op = scanString.nextLine(); 
    System.out.println(op); 

    System.out.println("Enter 2nd number:"); 
    int y = scanInt.nextInt(); 

    String ans = "The answer is: "; 

    if(op == "+"){ 
     System.out.println(ans + methods.addition(x, y)); 
    }else if(op == "-"){ 
     System.out.println(ans + methods.subtraction(x, y)); 
    }else if(op == "*"){ 
     System.out.println(ans + methods.multiplication(x, y)); 
    }else if(op == "/"){ 
     System.out.println(ans + methods.division(x, y)); 
    }else{ 
     System.out.println("UNKNOWN OPPORATOR"); 
    } 
} 
} 

的方法類如下:

public class methods { 
public static int subtraction(int x, int y){ 
    return x - y; 
} 
public static int addition(int x, int y){ 
    return x + y; 
} 
public static int multiplication(int x, int y){ 
    return x * y; 
} 
public static int division(int x, int y){ 
    return x/y; 
} 
} 
+0

好吧,我想起了瘋狂的定義...... – 2013-04-25 16:37:30

+0

儘管你最好使用一個掃描儀。 – 2013-04-25 16:38:43

+0

「默認答案」,你的意思是:System.out.println(「UNKNOWN OPPORATOR」); ? – 2013-04-25 16:39:48

回答

8

不能與==操作字符串值進行比較。 ==運算符比較兩個對象引用以確定它們是否引用同一個對象。

要比較兩個字符串值,使用String#equals

if("+".equals(op){ 

,同樣對其他比較。

+1

更準確地說,你可以將java.lang.String的實例與'=='運算符進行比較,但前提是它們已經被執行。 – rees 2013-04-25 16:38:50

+1

更準確地說,你可以*總是*比較java.lang.String和'=='運算符的實例,但它可能不會做你真正想要的。 :) – yshavit 2013-04-25 16:44:06

相關問題