2013-05-21 29 views
-1

我寫了一個簡單的程序來檢查輸入是否是字母O或不。出於某種原因,即使我鍵入字母O,程序也會輸出輸入不是字母O.我已經使用Eclipse調試器確保輸入變量實際上等於「O」。簡單的條件掃描輸入

import java.util.Scanner; 

public class scannerTest { 

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Give your input. I will tell you if your input is 'O' or not"); 
    String input = scan.next(); 
    if (input == "O"){ 
     System.out.println("Your input was 'O'"); 
     } 
    else { 
     System.out.println("Your input was not 'O'"); 
    } 
} 

} 

回答

3

您需要使用的,而不是==運營商equals方法,像這樣:

if(input.equals("O")) 

使用==進行比較字符串的內存地址的對象,而不是他們的價值觀,這樣才能爲==到返回true你將不得不比較相同的String對象。

+0

啊,我知道這是一些小事。希望StackOverflow能容忍這樣的問題。我會在15分鐘內接受你的回答。謝謝! – WeierstrassSauce

+2

@WeierstrassSauce抱歉說不,這是一個重複的問題。重複的問題在SO上不受歡迎。 –

+0

啊,我沒有意識到問題在於比較字符串。如果是這樣的話,我會查找的。 – WeierstrassSauce

1

==運算符檢查對象的相等性而不是字符串的值。

取而代之的是,使用:

if(input.equals("O")){ 
    //Code here 
}