在Java中嵌套while循环

时间:2013-01-30 06:01:41

标签: java loops while-loop nested-loops

我在java程序中遇到了一些嵌套while循环的问题。从我调试的代码开始,我的代码会检查第二个while循环语句,然后永远退出循环。我不知道为什么会这样,所以我会在这里发布代码:

while (current != null) {
        if(id == current.getMovie().getId()) {
           movieExists = true;
           movie = current;
           while (checkCurrent == movie) {
              showingPointer = checkCurrent.getMovie().getLinkHead();
              while (showingPointer != null) {
                 if (cal.compareTo(showingPointer.getShowing().getShowingCalendar()) == 0) {
                    return false;
                 }
                 showingPointer = showingPointer.getNext();
              }
              checkCurrent = checkCurrent.getNext();       
           }        
        }
        current = current.getNext();
     }

4 个答案:

答案 0 :(得分:6)

本声明

while (checkCurrent == movie) {

比较对象引用并始终为false。这不是比较两个实例的方法

您可能希望更改代码以比较

之类的值
 while(checkCurrent.getMovie().getId() == movie.getMovie().getId()){

或者实现了equals()进行比较。

更多关于Equals

答案 1 :(得分:0)

我猜你在执行代码时会返回false返回false。如果return语句正在执行,它将立即从方法返回

答案 2 :(得分:0)

为什么return false?这不是打破循环的正确方法。请改用break

答案 3 :(得分:0)

您应该在Node类中使用while (checkCurrent == movie)接口,并覆盖其Comparator方法,然后比较您的对象,而不是执行compare。由于==比较对象引用,因此它不适用于您的情况。