gpt4 book ai didi

java - Java中的循环不遵守条件?

转载 作者:行者123 更新时间:2023-11-30 03:40:58 25 4
gpt4 key购买 nike

我一直在绞尽脑汁,为什么 Java 在某些循环中会超出指定的条件,而在其他循环中似乎会遵守该条件。我知道这是我缺乏理解,但当我手动计算代码时,我很困惑何时应该超越或遵守条件。

作为示例,我放入了一个简短的 for 循环,其最终结果在 iTotal 中为 15,在 iNumber 中为 0。当我最初在纸上一步步计算时,我最终在iTotal中得到了14的答案,在iNumber中得到了1。我假设代码不会低于 1,因为条件大于零,不等于或大于零。

我最初的尝试 -

i总计0591214

iNumber5 4 3 2 1

    int iTotal = 0;
for (int iNumber = 5; iNumber > 0; iNumber--)
iTotal = iTotal + iNumber;

相比之下,下面的代码片段将在 19 处,条件小于 20,最后一条语句是 x 的值:19。我计算得正确,但我不确定为什么上面的代码会忽略条件并变为 0,而下面的代码会遵守条件并停止在 19。

for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x);
System..out.print(num2 + " " + num1);

谁能澄清java如何解释何时在指定条件下结束或停止?

最佳答案

In comparison, the below code snippet will at 19 with a condition of less than 20, with the last statement being value of x : 19. I calculated that correctly, but I'm not sure why the above code ignores the condition and goes to zero, while the below code adheres to the condition and stops at 19.

你说的不对。最后打印的语句是 19,但 x 的最后一个值是 20。您给出的这个循环实际上执行了 20 次。 Java 中的 for 循环(如您给出的循环)具有 3 个组件:用作计数的整数、要测试的条件以及如何转换计数变量。一般形式如下:

for(count variable, condition, transformation){
//Code goes here
//End loop
}

这个 for 循环会一直执行,直到条件不再为真为止,这是由于对计数变量应用某种转换而导致的。

使用您给出的 for 循环作为示例:

for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x);
System..out.print(num2 + " " + num1);
}
  1. 我们创建计数变量 ( int x ) 并将其设置为等于 10 .
  2. 我们根据条件 ( int x ) 检查计数变量 ( x<20 ) 并评估结果 x < 20 == true这样循环内的代码就会运行。在代码末尾,我在转换 ( x + 1 ) 上方标记了“结束循环”,该代码将应用于计数变量,然后再次测试条件以查看循环是否应继续。
  3. x = 11现在因为 x 等于 10,但我们在上一个循环末尾添加了指定的 1。 x < 20 == true仍然为 true,因此循环内的代码将再次执行。以此类推,直到最后一个数字。
  4. 当 x = 19 时,我们按照我们一直在做的方式测试条件,看看是否 x < 20 == true仍然是 true,所以代码被执行。当代码执行结束时,计数变量再次递增,so x = 20
  5. x = 20我们再次测试x < 20 。这次x < 20 == false因此循环内的代码不会执行,也不会对该变量应用另一个转换。此时,当条件变为假时循环结束。因为我们说x < 20而不是x <= 20在第 20 个循环中,当 x = 20 时,此代码:

    System.out.print("x 的值:"+ x);System..out.print(num2 + ""+ num1);

    不会运行。这意味着程序的最终输出将发生在 x = 19 时。不是什么时候x=20尽管如果您在循环结束后仍然能够访问 count 变量(我相信您可以使用调试器完成),您会看到 x=20

第一个循环执行以下操作:

  1. i 总计 = 0
  2. i 总计 = 5
  3. i 总计 = 9
  4. i 总计 = 12
  5. i 总计 = 14
  6. i 总计 = 15
  7. 循环结束

第一个循环转换也写为 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相同.

关于java - Java中的循环不遵守条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26837677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com