Java 为什么赢了';该代码是否识别出这两个变量是相同的?
嘿,我正在尝试从用户那里获取字符串输入(在本例中是电影的名称,例如Good Burger)。我有一个类电影的arraylist,我正在反复浏览。在每次迭代中,调用类Film实例中的一个方法,该方法返回一个Film名称字符串。当我比较这两者时,它似乎没有意识到它们是平等的,我也不明白为什么 下面是获取输入并比较两者的代码: //获取用户输入的影片Java 为什么赢了';该代码是否识别出这两个变量是相同的?,java,compare,Java,Compare,嘿,我正在尝试从用户那里获取字符串输入(在本例中是电影的名称,例如Good Burger)。我有一个类电影的arraylist,我正在反复浏览。在每次迭代中,调用类Film实例中的一个方法,该方法返回一个Film名称字符串。当我比较这两者时,它似乎没有意识到它们是平等的,我也不明白为什么 下面是获取输入并比较两者的代码: //获取用户输入的影片 int numberOfFilmsCheck; numberOfFilmsCheck = 0; BufferedReader r
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).啊,是的,这就是失败的原因。对不起,我没有说清楚:)是的,我只是把它打印出来,看看代码是否真的有那么远哈哈