Java 为什么赢了';该代码是否识别出这两个变量是相同的?

Java 为什么赢了';该代码是否识别出这两个变量是相同的?,java,compare,Java,Compare,嘿,我正在尝试从用户那里获取字符串输入(在本例中是电影的名称,例如Good Burger)。我有一个类电影的arraylist,我正在反复浏览。在每次迭代中,调用类Film实例中的一个方法,该方法返回一个Film名称字符串。当我比较这两者时,它似乎没有意识到它们是平等的,我也不明白为什么 下面是获取输入并比较两者的代码: //获取用户输入的影片 int numberOfFilmsCheck; numberOfFilmsCheck = 0; BufferedReader r

嘿,我正在尝试从用户那里获取字符串输入(在本例中是电影的名称,例如Good Burger)。我有一个类电影的arraylist,我正在反复浏览。在每次迭代中,调用类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.");
        }
如果你注意到任何流氓打印语句在那里,那只是我检查代码是否正常工作

非常感谢您的帮助!谢谢

这个
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;
    }
}
用于(胶片:胶片){
film.printFilmName();
filmName=film.getFilmName();//函数
getFilmName()
看起来非常有用,但前提是您最终调用它:-)

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

我怀疑您可能需要以下内容:

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;
    }
}
用于(胶片:胶片){
film.printFilmName();
filmName=film.getFilmName();//尝试输入以下代码:

System.out.println("'" + inputFilmName + "' vs '" + filmName + "'")
if(inputFilmName.equals(filmName)){
行之前,您将看到它不相等的原因。注意单引号。

尝试放置以下代码:

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

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

非常感谢!!它一定会这么简单!哈哈,傻我,谢谢您的所有回复,非常感谢:)非常感谢!!它一定会这么简单!哈哈,傻我,谢谢您的所有回复,他们非常感激:)检查电影名称的大小写,并确保所有间距(前、内、后)都相同。向我们展示您的输入数据。感谢您的回复,所有大小写和间距都相同。我正在制作一部包含参数名称、id和长度的电影。例如:film4=新电影(“死亡笔划”,4,1.5);film5=新胶片(“酷酷的运行”,5,2);@Omar-我假设这是失败的一行?如果(inputFilmName.equals(filmName)){在该行之前,也打印出filmName。输入的所有大小写和间距都与胶片名称相同。我正在创建一个包含参数name、id和长度的胶片。例如:film4=新胶片(“死亡中风”,4,1.5);film5=新电影(“酷跑”,5,2)。啊,是的,这是失败的一部。对不起,我没有说清楚:)是的,我只是打印出来看看代码是否真的有那么远。检查电影名称的大小写,并确保所有间距(之前、之内、之后)是相同的。请显示您的输入数据。感谢您的回复,所有大小写和间距都是相同的。我正在创建一个具有参数名称、id和长度的影片。例如:film4=新影片(“死亡笔划”,4,1.5);film5=新影片(“酷酷跑步”,5,2);@Omar-我假设这是失败的行?if(inputFilmName.equals)(filmName){在那一行之前,也打印出filmName。输入的所有大小写和间距都与电影名称相同。我正在创建一个包含参数名称、id和长度的电影。例如:film4=新电影(“死亡笔划”,4,1.5);film5=新电影(“酷跑”,5,2).啊,是的,这就是失败的原因。对不起,我没有说清楚:)是的,我只是把它打印出来,看看代码是否真的有那么远哈哈