while 循环的条件在 java 中不起作用

Condition for while loop doesn't work in java

如果数字不等于 0 且 rest%2 等于 1 或 -1,我希望循环重复。但这似乎不起作用:

while (number != 0 && rest%2 == 1 || rest%2 == -1)

我必须如何编写代码才能正常工作?

正确的做法是:

while (number != 0 && (rest%2 == 1 || rest%2 == -1))

在这里查看 Java 运算符优先级 https://introcs.cs.princeton.edu/java/11precedence/

如果我没理解错你想在两种情况下进入循环:

  • number != 0 && rest%2 == 1

  • rest%2 == -1

如果是这样,请考虑使用括号:

while ((number != 0 && rest%2 == 1) || rest%2 == -1)

虽然了解运算符优先级很好,但您的表达式可以减少:

while (number != 0 && rest%2 != 0)

换句话说,n % 2 对于正偶数和负偶数都是 0,不是偶数的东西一定是奇数(这就是你正在测试的)。