为什么答案为0而不是1?我知道它与布尔句子有关,但我无法弄清楚它是如何工作的。根据我的理解,当i和j都等于1时,while循环停止。
public void random(){
int i = 0;
int j = 2;
int k = 0;
boolean keepGoing;
keepGoing = i<j;
while (keepGoing && k<2) {
i++;
j--;
k++;
}
System.out.println(j);
}
打印出0
答案 0 :(得分:1)
您可能会这样说,因为您认为keepGoing
变量将停止循环...
那么keepGoing
变量根本没有变化!您使用以下方法实例化了变量:
boolean keepGoing;
keepGoing = i<j;
此表达式将在代码中查看i
和j
的值,将这些变量替换为它们的值(此时分别为0和2) ),只是处理比较。由于i
在代码中当时小于j
,因此它将返回true并将keepGoing
设置为true。之后,keepGoing
每次i
或j
更改时都不会自行更改。{1}}这不是它的工作原理。 keepGoing
的值只有在您设置其他值时才会更改! 一般情况下,变量只会在遇到明确的行(或方法)时才会发生变化。因此,如果您希望{J}每次更改时都需要更改keepGoing
i
或j
,每次发生时,您都必须明确重新计算keepGoing
。在您的情况下,这将在while
块的末尾:
while (keepGoing && k<2) {
i++;
j--;
k++;
keepGoing = i<j; //explicitely recalculate value of keepGoing
}
答案 1 :(得分:0)
这是因为你正在减小整数j并增加整数k。
while步骤如下: