为什么这两个变量不相等?

时间:2014-09-22 06:09:13

标签: java oop

我试图根据用户输入识别对象,并且不知道它为什么不起作用...

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;
    }
}

我打印出"发现它"所以我可以检查它什么时候起作用...但无论我输入正确的字符串,哪一个与已经打印出来的字符串匹配,它都不会等于它。

2 个答案:

答案 0 :(得分:1)

由于这两个gameInputg.getId()是字符串类型。

您应该使用equals()代替==

equals()比较每个变量的内容

==比较参考,如果他们正在看同一件事

答案 1 :(得分:1)

更改

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

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