2011-08-20 172 views
10
String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "L"}; 

Scanner inp = new Scanner(System.in); 
String input = (inp.nextLine()); 
String[] cord = input.split(""); 

for(int x = 0; x < 10; x++) 
    if(letters[x] == cord[1]) 
     System.out.println("Fk yeah!"); 

爲什麼FK呀!如果我輸入A-L字母之一,就不會發生?字符串不等於字符串?

+0

你確定'cord'實際上只是字母而沒有空白嗎? – 2011-08-20 00:43:50

+0

也可以是大寫與小寫 – Jody

+0

是的,我相信100%。不,他們都是大寫。 –

回答

22

字符串是對象。 ==通過引用比較對象,而不是內部值。

有2個解決方案:

  1. 使用String#equals()方法,而不是比較兩個String對象的值。

    if (letters[x].equals(cord[1])) 
    
  2. 使用char而不是String。這是一個原始的,所以==將工作。

    char[] letters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L'}; 
    
    Scanner inp = new Scanner(System.in); 
    String input = (inp.nextLine()); 
    char[] cord = input.toCharArray(); 
    
    for (int x = 0; x < 10; x++) 
        if (letters[x] == cord[1]) 
         System.out.println("Fk yeah!"); 
    
+5

聖牛你有很多徽章 – 2011-08-20 00:47:57

+2

@Code:與Jon Skeet相比,這沒什麼。 – BalusC

+0

以及祝賀任何一種方式:)我向你低頭Sir – 2011-08-20 00:53:05

11

比較字符串是否相等,不使用==。 ==運算符檢查兩個對象是否完全相同。兩個字符串可能是不同的對象,但具有相同的值(在它們中具有完全相同的字符)。使用.equals()方法比較字符串是否相等。同樣,使用.compareTo()方法來測試不等比較。例如,

String s = "something", t = "maybe something else"; 
if (s == t)  // Legal, but usually WRONG. 
if (s.equals(t)) // RIGHT 
if (s > t) // ILLEGAL 
if (s.compareTo(t) > 0) // CORRECT>