2012-02-22 77 views
0

我的程序必須顯示問題「10> 2」的答案是否正確,錯誤或用戶必須輸入錯誤。即使我輸入「YES」或「NO」,它仍會顯示WRONG INPUT。這是一個非常非常簡單的程序。不過,我是一個新手。任何幫助將不勝感激。我的程序已成功編譯並運行,但顯示錯誤輸出

import java.util.Scanner; 

public class yesorno{ 

public static void main (String args[]){ 

    Scanner answer = new Scanner(System.in); 
    String ans; 

    System.out.println("Answer with a YES or NO"); 
    System.out.println("Is 10>2?"); 
    System.out.print("Answer:"); 
    ans = answer.next(); 

    if(ans == "YES"){ 
     System.out.print("Correct!"); 
    } 

    else if (ans == "NO"){ 
     System.out.println("Wrong!"); 
    } 

    else{ 
     System.out.println("Wrong input!"); 
    } 
} 
} 

回答

7
if(ans == "YES"){ 

您應該使用equals()比較字符串,而不是operator==

注意operator==將產生真正的只有兩個對象實際上是同一個對象,它是不是這樣的。

你應該把它替換到if(ans.equals("YES")) { [和做同樣的在你的程序的所有其他條件]

+0

喜!感謝您的回答,但是語法是什麼? – singko 2012-02-22 18:39:02

+0

@ keavy:我添加了條件應該是的,並且還附加了一個指向'equals()'方法java docs的鏈接,所以你可以閱讀更多關於它的信息。 – amit 2012-02-22 18:41:01

+0

好的,好的。還有一件事,只有數字「==」? – singko 2012-02-22 18:43:32

1

您正在使用==,這一般不推薦這樣做在Java中的字符串比較,因爲==確實對象比較而不是實際的字符串比較。

嘗試使用equals()方法。

也就是說,從

if(ans == "YES"){ 
    System.out.print("Correct!"); 
} 

else if (ans == "NO"){ 
    System.out.println("Wrong!"); 
} 

更改您的代碼

if(ans. equals("YES")){ 
    System.out.print("Correct!"); 
} 

else if (ans.equals("NO")){ 
    System.out.println("Wrong!"); 
} 
+0

它的工作!非常感謝。有一件事,只有數字「==」? – singko 2012-02-22 18:41:45

相關問題