我在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();
}
答案 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
。由于==
比较对象引用,因此它不适用于您的情况。