单链表中的while循环条件

问题描述

正在解决单链表中的循环检测问题,并且遇到了While循环中似乎无法理解的问题

我已经附上了一张图片,绿色框中的一张给了我正确的输出

红色框中的内容给我错误输出结果

对这两个之间的区别有何解释?因为除了顺序以外,我似乎无法找到它们之间的区别,但是我设置了一个AND语句,所以我认为无论顺序如何,它们都应该工作,但我遇到的情况似乎并非如此

enter image description here

解决方法

AND 条件下,将首先检查第一个条件,如果该条件为False,则不会转到第二个条件并从那里返回。

在这里,而第一个是

oneUp.next != null

如果 oneUp 的值为空,则将无法访问 oneUp 的下一个。 因此,我们需要验证 OneUp 的值,使其不应该为null。

如果它为null,它将不会去检查下一个条件。

因此必须首先检查oneUp != null