1

我的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

4 回答 4

6

这个说法

while (checkCurrent == movie) {

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

您可能想要更改代码以比较类似的值

 while(checkCurrent.getMovie().getId() == movie.getMovie().getId()){

或者有一个 equals() 实现来比较。

更多关于等于

于 2013-01-30T06:07:31.020 回答
0

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

于 2013-01-30T06:04:06.290 回答
0

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

于 2013-01-30T06:07:09.777 回答
0

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

于 2013-01-30T09:15:28.187 回答