while 单链表中的循环条件

while loop condition in singly linkedlist

在解决单链表中的循环检测时遇到了一个我在 While 循环中似乎无法理解的问题

我附上了一张图片,绿框中的那个给了我正确的输出

虽然红框里的那些给了我错误的输出

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

AND 条件中,将首先检查第一个条件,如果为 False,则不会转到第二个条件 return。

这里,第一个是

oneUp.next != null

oneUp的值为null时,将无法访问oneUp的next。 所以我们需要验证 OneUp 的值不应该为空。

如果为空,则不会去检查下一个条件。

因此必须先检查oneUp != null