'if'语句的问题

时间:2014-01-24 14:47:21

标签: java loops if-statement nested

我一直在尝试调试这段代码,但似乎无法弄清楚为什么即使满足条件(例如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;

            }
        }

}

1 个答案:

答案 0 :(得分:5)

您在循环中使用else子句,因此每当您认为电影或影院与您输入的内容不同时,它就会执行。而是使用一个标志来表示已找到电影和影院,如果没有设置,则在退出整个for循环后提供状态消息:

boolean found = false;
for (...) {
    if (movie ...) {
        if (theatre ...) {
            found = true;
        }
     }
 }
 if (!found) {
     System.out.println("Movie ...");
 }