我一直在思索为什么Java会在某些循环中超出指定条件,而看似坚持其他循环中的条件。我知道这对我来说缺乏了解,但我很困惑,当我手动计算代码时,我应该过去或坚持这个条件。
作为一个例子,我输入了一个简短的for循环,最终结果是iTotal为15,而iNumber为0。当我最初在纸上逐步进行计算时,我得到了iTotal中14的答案,以及iNumber中的1个答案。我假设代码不会低于1,因为条件大于零,不等于或大于零。
我最初的尝试 -
ITOTAL 0 五 9 12 14
i编号 5 4 3 2 1
int iTotal = 0;
for (int iNumber = 5; iNumber > 0; iNumber--)
iTotal = iTotal + iNumber;
相比之下,下面的代码片段在19处的条件小于20,最后一个语句的值为x:19 。我正确地计算了,但是我不确定为什么上面的代码忽略了条件并且变为零,而下面的代码遵守条件并且在19处停止。
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x);
System..out.print(num2 + " " + num1);
有没有人可以澄清java如何解释在特定条件下过去或停止的时间?
答案 0 :(得分:1)
你的第一个循环
for (int iNumber = 5; iNumber > 0; iNumber--)
iTotal = iTotal + iNumber;
是5 + 4 + 3 + 2 + 1 = 15(在添加第一个iTotal
之前,您必须打印iNumber
)。第二个循环类似于当条件计算为false
时未输入循环体。
int x = 10;
for(; x < 20; x = x+1) {
System.out.print(x + " ");
}
System.out.println(x); // x is 20
为10,11,12,13,14,15,16,17,18,19,20,但在二十一时,循环终止。
答案 1 :(得分:1)
相比之下,下面的代码片段将在19处,条件为 小于20,最后一个陈述是x的值:19 计算得当,但我不确定为什么上面的代码会忽略 条件并归零,而下面的代码遵循 条件并在19点停止。
你说的不对。打印的最后一个语句是19,但x的最后一个值是20.你给出的这个循环实际上执行了20次。 Java中的for循环就像你给出的循环有3个组件,一个整数用作计数,一个要测试的条件,以及如何转换计数变量。在一般形式中,它看起来像这样:
for(count variable, condition, transformation){
//Code goes here
//End loop
}
这个for循环一直执行,直到条件不再为真,这是由于对某个count变量应用某种变换引起的。
使用你给出的for循环作为例子:
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x);
System..out.print(num2 + " " + num1);
}
int x
)并将其设置为10
。int x
)检查计数变量(x<20
)并评估结果x < 20 == true
,以便运行循环中的代码。在代码的末尾,我已经标记了&#34; End Loop&#34;转换之前(x + 1
)应用于count变量,然后再次测试条件以查看循环是否应继续。x = 11
现在因为x等于10但我们在最后一个循环结束时添加了一个。 x < 20 == true
仍然是正确的,因此循环中的代码将再次执行。这样就一直持续到最后一个数字。x < 20 == true
是否仍然为真,这样就执行了代码。当代码执行结束时,count变量再次递增so x = 20
。 x = 20
我们再次对x < 20
进行测试。这一次x < 20 == false
因此循环内的代码不会被执行,也不会将另一个转换应用于变量。此时,当条件变为假时,循环结束。因为我们在第20个循环中说x < 20
而不是x <= 20
,当x = 20时,这段代码:
System.out.print(&#34; x的值:&#34; + x); System..out.print(num2 +&#34;&#34; + num1);
不会运行。这意味着程序的最终输出将在x = 19
不在x=20
时发生,尽管如果在循环结束后你仍然能够访问count变量(我相信你可以用调试器做)你会看到x=20
第一个循环执行此操作:
同样,第一个循环转换被写为x--
而不是x - 1
,第二个循环可以重写为:
for(int x = 10; x < 20; x++) {
System.out.print("value of x : " + x);
System..out.print(num2 + " " + num1);
}
在Java中,++
运算符增加1,与x+1
相同。
答案 2 :(得分:0)
在每个循环之前检查条件,而不是之后。所以在你的第一个例子中,逻辑将会出现:
iNumber = 5
iNumber > 0
。 5 > 0
,继续循环iTotal
(此后为iTotal=5
)iNumber
iNumber > 0
。 4 > 0
,继续循环iTotal
(此后为iTotal=9
)iNumber
iNumber > 0
。 1 > 0
,继续循环iTotal
之后添加1(此后为iTotal=15
)iNumber
iNumber > 0
。 0 > 0
为false
,因此突破循环第二个循环也会发生类似的过程。