我一直在尝试调试这段代码,但似乎无法弄清楚为什么即使满足条件(例如findTitle.equals(title));它仍然会转移到'其他'状态。一切看起来很直接,似乎是正确的。对此有何见解?
private void addNewMs() {
// TODO Auto-generated method stub
String title = Helper.readString("Enter movie title > ");
String theatre = Helper.readString("Enter theatre name > ");
Theatre Art = null;
for (int i = 0; i < movies.size(); i++){
String findTitle = movies.get(i).getTitle();
if (findTitle.equals(title)){
for (int a = 0; a < theatres.size();a++){
String findTheatre = theatres.get(a).getName();
if (findTheatre.equals(theatre)){
Art = theatres.get(a);
Movie m = movies.get(i);
int year = Helper.readInt("Enter year > ");
int month = Helper.readInt("Enter month > ");
int day = Helper.readInt("Enter day > ");
int hours = Helper.readInt("Enter hour > ");
int mins = Helper.readInt("Enter mins > ");
Date d = Helper.thisDate(year, month, day, hours, mins);
MovieScreening newScreening = new MovieScreening(d, m, Art, 0);
screenings.add(newScreening);
System.out.println("Added Successfully.");
}
else {
System.out.println("Movie and/or Theatre not found.");
break;
}
}
} else {
System.out.println("Movie and/or Theatre not found.");
break;
}
}
}
答案 0 :(得分:5)
您在循环中使用else子句,因此每当您认为电影或影院与您输入的内容不同时,它就会执行。而是使用一个标志来表示已找到电影和影院,如果没有设置,则在退出整个for循环后提供状态消息:
boolean found = false;
for (...) {
if (movie ...) {
if (theatre ...) {
found = true;
}
}
}
if (!found) {
System.out.println("Movie ...");
}