嘿我试图从用户那里获取一个String输入(在这种情况下是一个电影的名字,例如Good Burger)。我有一个类电影的arraylist,我正在迭代。在每次迭代中,调用类Film实例中的方法,该方法返回电影名称的String。当我比较这两者时,似乎并没有意识到它们是平等的,我无法弄清楚原因。
继承了输入并比较两者的代码:
//获取用户输入的电影。
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;
}
如果您发现其中有任何流氓打印声明,我只是检查代码是否正常工作。
非常感谢任何帮助!感谢
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
尝试输入此代码:
System.out.println("'" + inputFilmName + "' vs '" + filmName + "'")
在if(inputFilmName.equals(filmName)){
行之前,您将看到为什么它不相等。哦注意单引号..