0

嘿,我正在尝试从用户那里获取字符串输入(在这种情况下是电影的名称,例如 Good Burger)。我有一个 Film 类的数组列表,我正在从中迭代。在每次迭代中,调用 Film 类实例中的一个方法,该方法返回一个电影名称字符串。当我比较这两者时,它似乎没有认识到它们是平等的,我不知道为什么。

这是接受输入并比较两者的代码:

//获取用户输入的电影。

    int numberOfFilmsCheck;
    numberOfFilmsCheck = 0;
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    Film tempFilm;
    System.out.println("Please enter the names of the films you wish to be in the new schedule");
    System.out.println("Press enter after each one.");

    while(numberOfFilmsCheck < numberOfFilms){
        boolean foundFilm;
        foundFilm = false;
        String inputFilmName = null;
        tempFilm = null;
        String filmName;
        filmName = null;
        try{
            inputFilmName = reader.readLine();
            System.out.println(inputFilmName);
        }
        catch (IOException e){
            System.out.println("Error");
        }

        for(Film film : films){
            film.printFilmName();
            if(inputFilmName.equals(filmName)){
                foundFilm = true;
                tempFilm = film;
                System.out.println("Found film name");
                break;
            }
        }

        if(foundFilm == true){
            newFilmsForSchedule.add(tempFilm);
            numberOfFilmsCheck++;
        }
        else{
            System.out.println("The film you entered has not been recognised.");
            System.out.println("Please enter the film name as shown above.");
        }

这是返回电影名称的 Film 类中的代码:

public String getFilmName()
{
    return filmName;
}

如果您注意到那里有任何恶意打印语句,那只是我在检查代码是否正常工作。

任何帮助深表感谢!谢谢

4

2 回答 2

3

getFilmName()函数看起来非常有用,但前提是您最终调用它:-)

您似乎filmName在开始时设置为 null ,然后您实际上从未更改它(例如,通过调用getFilmName())。因此,出于比较的目的,它将为空。

我怀疑你可能需要类似的东西:

for(Film film : films){
    film.printFilmName();
    filmName = film.getFilmName();               // <-- Added this.
    if(inputFilmName.equals(filmName)){          // <-- So that this works.
        foundFilm = true;
        tempFilm = film;
        System.out.println("Found film name");
        break;
    }
}
于 2012-04-27T00:48:42.580 回答
0

试着把这段代码:

System.out.println("'" + inputFilmName + "' vs '" + filmName + "'")

在该if(inputFilmName.equals(filmName)){行之前,您将看到为什么它不相等。哦,注意单引号..

于 2012-04-27T00:52:05.740 回答