循环,麻烦理解循环请帮助初学者

时间:2014-11-08 23:57:37

标签: java

int a= IO.readInt();
int b = IO.readInt();
int z = 0; 
int i;
for(i =0; z<=b; i++) {
  z=z+a;
} 

System.out.println(i);

a。)在给定以下输入的情况下,代码的实际输出是多少? 输入:a读入20,b读取75.

B)。这段代码类似于什么数学运算。

℃。如此实现,此代码是否正确完成了您在(b)中确定的操作?如果是这样,提供一些测试用例来表明这一点如果没有,修复代码中的错误。 ``

好的,所以我的教授回答了答案,我想知道你们是否有人可以解释这段代码中究竟发生了什么。我得到的是什么。)是4但是不知道它是怎么回事.4对于数学运算,代码类似于我得+ +加法而且那里没有接近答案的地方。我需要更好地了解循环,我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

输出是循环持续多少次,直到z> 1。湾每次都要对z + a做一个简单的补充,你应该理解它是如何执行的

答案 1 :(得分:0)

好的,这是我可以为循环做出的最佳解释,以及代码中发生的事情。

首先,for循环包含3个部分,initializerexpressionincrementor,如下所示:

for (initializer; expression; incrementor)

您的初始值设定项会将int i初始化为0.只要z小于或等于b(z <= b)就会执行此操作,每次执行此操作时,它会递增i } by 1;

你循环将第一个输入添加到z,直到它不再低于b。第一次运行时,它会将{20}添加到z,将1添加到i。然后它回到循环的开头,并检查表达式。

由于z仍小于75,因此会再次运行。这使z = 40,i = 2.再次,z小于75,因此它再次运行 。这一次,z为60,i为3;但是60仍然不到75.

我想你可以看到它的发展方向。这将我们带到最后的迭代。它向z添加了另外20个,而i增加了1个。现在z = 80,i = 4.并且它最后一次检查循环的表达式。由于z大于75,因此循环终止。这会使i的值为4,这就是您获得的输出

答案 2 :(得分:0)

首先,我将解释for循环如何工作,然后我将回答你的问题:

for(initialization of variables; condition-testing; increment variables) {
  statements;
}

变量的初始化是经常初始化计数器的地方。在您的案例中,变量i设置为0,i =0

条件测试中,您可以测试条件是否为真,如果条件为真,则执行for循环中的代码。在您的情况下,条件是: z&lt; = z + a 。如果这不能阻止你在for循环中执行代码并在for循环之后跳到右边,这在你的情况下是System.out.println(i)

最后之后,之后!一次迭代increment variables部分更新。我的意思是一次迭代是从开始到结束执行for循环的主体。在您的情况下,这是z=z+a。我不能足够强调在一次迭代后增量发生。在你的情况下,i++被执行,这意味着变量i增加1。 i ++与i = i + 1相同.i + 1的旧值。

现在回答你的问题。 a)我将逐步解释会发生什么,并用粗体标记最终答案。

  1. i初始化为0,i=0
  2. 第一次测试
  3. z<=b,现在z = 0和b = 75,因此条件z<=b成立,因此for循环中的语句正在执行..
  4. z=z+a正在执行中。始终首先评估等号=的右侧,然后将其分配到=符号的左侧。换句话说:z=z+a看起来像z = 0 + 20z = 20的新值
  5. 这是第一次迭代,现在最终i递增。 i++ i的值现在为1i = 1
  6. z<=b第二次测试,z = 20正如我们在步骤3中看到的那样,b = 75因此条件20<=75为真,而且声明中的声明为 - 循环执行。
  7. z=z+a,z = 20 + 20,z的新值变为40. z = 40
  8. 这是第二次迭代,我再次增加一i++i现在是2i = 2
  9. z<=b第三次评估。 z = 40且b = 75,因此条件为真且循环正在执行。
  10. z = z + a,z = 40 + 20,z的新值变为60. z = 60
  11. i增加1.我变为3. i = 3
  12. z&lt; = b第四次测试,z = 60,b = 75,因此条件为真,并且执行for循环中的语句。
  13. z = z + a,z = 60 + 20,z的新值变为80. z = 80
  14. i ++增加,我变为4. i = 4
  15. z <= b进行第5次测试,z = 80且b = 75,此时z不再小于或等于b。 80不等于或小于75.因此这次不执行for循环中的语句。并且由于i的增量仅在成功执行正文中的最后一个语句之后发生,所以我保持在4。
  16. 代码在for循环后恢复,所以现在正在执行System.out.println(i)。这将打印i的值,因为您可以看到i的值在循环中增加到值4。这是打印的价值。的 4

    b / c)我没有完全理解数学运算的含义,但代码的作用相同:向上舍入75/20。

    为了更好地理解for循环,你可以看看这个简化的例子:

    for(int i = 0; i<2; i++){
     System.out.println(i);
    }
    

    您将看到此程序的输出将是:

    1
    2
    

    这是因为它从0开始并在条件i <2不再为真时停止。作为一个方便的技巧,您可以记住,此处的数字i&lt; 数字应该是for循环中的迭代次数。 (如果我也被初始化为0并且增加1,你会经常看到它。)