2014-09-22 86 views
-2

我試圖根據用戶輸入識別一個對象,並不知​​道爲什麼它不工作...爲什麼這兩個變量不相等?

userInput只是一個掃描儀,而allGames是一羣具有ID的「遊戲」類的數組列表像S01,S02等

Game gameToChange = null; 
for (Game g : allGames){ 
     System.out.println(g.getId()); 
} 
String gameInput = userInput.nextLine(); 
    System.out.println(gameInput); 
    for (Game g : allGames){ 
     if (gameInput == g.getId()){ 
      System.out.println("Found it"); 
      gameToChange =g; 
     } 
    } 

遊戲類:

public abstract class Game { 

    private String identifier; 

    public Game(String id){ 
     identifier = id; 
    } 

    public String getId(){ 
     return this.identifier; 
    } 
} 

我對打印輸出的「發現」只是這樣我就可以在它的工作檢查......但是當我進入不管正確的字符串,與已經打印的字符串相匹配它永遠不會等於它。

+0

在Java中的字符串比較是使用String @ equals而不是'=='來完成的,它比較了String和String的兩個不同實例的內存位置。 。 – MadProgrammer 2014-09-22 06:11:09

+2

重複的http://stackoverflow.com/q/513832/3680684 – herrlock 2014-09-22 06:11:10

回答

1

變化

if (gameInput == g.getId()){ 

if (gameInput != null && gameInput.equals(g.getId())){ 
+0

Ahhhhhh謝謝,我陷入了尋找更大的問題,忘記這樣的事情。欣賞它。 – 2014-09-22 06:14:08

+0

@JordanAndrews你明白了爲什麼? – 2014-09-22 06:15:12

+1

我相信我在測試它是否實際上是同一個對象,而不是這兩個字符串是否實際上是相同的 – 2014-09-22 06:17:28

1

由於這兩個gameInputg.getId()都是字符串類型。

您應該使用的equals()代替==

equals()比較內容的每個變量

==比較基準,如果他們在看同一事物或不