您能解释一下为什么当我在循环中使用短路或时我的代码“挂起”吗?
我编写了一个代码来计算两个整数的最大公因数:
int a = 9; int b = 6; while (a != 0 || b != 0) //here is the problem { if (a >= b) { a = a - b; } else b = b - a; } if (a == 0) System.out.println(b); else System.out.println(a);
当我使用 || 时运算符,在我看来合乎逻辑的是,我的程序的运行永远不会停止。然而,当我使用 && 运算符时,这对我来说似乎不合逻辑,但它工作得很好。你能解释一下为什么我不能使用 || 退出循环吗?运算符?
最佳答案
让我们一步步检查输出(每一步对应一个循环):
第 1 步:
a >= b is true so a is now equal to 3
第 2 步:
b >= a is true so b is now equal to 3
第 3 步:
a >= b is true so a is now equal to 0
我们就到此为止吧。当 a 或 b 不等于 0 时,while 循环将继续运行。在所有后续循环中,b 将被设置为 3 - 0 并且这些值永远不会改变 - 它将无限运行。如果您的目标是在 1 值达到 0 时停止循环,则需要 && 语句。
关于java - 无法使用 || 退出循环运算符(operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33863471/