解释这个循环给我(基本的java)?

时间:2014-02-24 22:51:08

标签: java while-loop

以下代码执行完毕后,z的值是多少?

int x;
int y;
int z;

x = 1;
z = 1;

while (x <= 5)
{
  z = z + x;
  x = x + 1;
}

我知道答案是16但我在尝试计算时遇到了错误。我觉得我一开始就搞乱了循环中的一步。我知道我可以将它插入一个java客户端并得到答案,但我真的想了解循环序列,以便能够手工完成。

7 个答案:

答案 0 :(得分:5)

要真正理解它,就像计算机一样思考。写出while循环对每次迭代中的每个变量要做的事情。我省略了y,因为它似乎没有被用于任何东西。

                x |  z | (x <= 5) | z + x | x + 1
               ===+====+==========+=======+======
Initial:        1 |  1 |          |       |     
               ===+====+==========+=======+======
Iteration 1:    1 |  1 | true     |     2 |     2
Iteration 2:    2 |  2 | true     |     4 |     3
Iteration 3:    3 |  4 | true     |     7 |     4
Iteration 4:    4 |  7 | true     |    11 |     5
Iteration 5:    5 | 11 | true     |    16 |     6
Iteration 6:    6 | 16 | false    |       |
               ===+====+==========+=======+======
Final values:   6 | 16 |          |       |

x等于6时,测试x <= 5的评估结果为false,因此我们会突破循环。现在,最后,我们可以看到z = 16

答案 1 :(得分:4)

    x = 1;
    z = 1;

好的,x是1,z是1。

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

x小于或等于5,因此我们执行此操作。我们将z设置为1 + 1或2.我们将x设置为1 + 1或2。

x = 2
z = 2

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

2是&lt; = 5,所以我们循环。 z = 2 + 2,或4. x = 2 + 1,或3。

x = 3
z = 4

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

x小于或等于5.现在z = 4 + 3 = 7,x = 3 + 1 = 4.

x = 4
z = 7

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

再次,4 <= 5,所以z = 7 + 4 = 11,x = 4 + 1 = 5

x = 5
z = 11

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

5是&lt; = 5,所以我们循环。 z = 11 + 6 = 16,x = 5 + 1 = 6

x = 6
z = 16

    while (x <= 5)
    {
      z = z + x;
      x = x + 1;
    }

哎呀,x不是&lt; = 5,所以我们完成了。 z现在是16。

一旦你理解了这个循环是如何工作的,那很明显。我们从1开始。然后我们添加1,2,3,4,最后5。 1 + 1 + 2 + 3 + 4 + 5 = 16

答案 2 :(得分:2)

x=1
z=1
while(x is less than or equals to 5) {
z is z + x;
x is x+1
}

意味着第一个循环将是

z = 1 + 1 = 2
x = 1 + 1 = 2

第二

z = 2 + 2 = 4
x = 2 + 1 = 3

依此类推,直到x为5

答案 3 :(得分:2)

学习循环时,制作图表可以让你更容易看到发生了什么(虽然它有点乏味)

z  | x | while (x <= 5) | z + x | x + 1 | new z | new x
=======================================================
1  | 1 | true           |   2   |   2   |   2   |  2        
_______________________________________________________
2  | 2 | true           |   4   |   3   |   4   |  3
_______________________________________________________
4  | 3 | true           |   7   |   4   |   7   |  4
_______________________________________________________
7  | 4 | true           |   11  |   5   |  11   |  5
_______________________________________________________
11 | 5 | true           |   16  |  6    |   16  |  6
_______________________________________________________
16 | 6 | false          |  NA   |  NA   |  NA   |  NA
^ final value

通过编写表格,您可以看到值随时间的变化情况。一旦达到false,就会知道z的最终值是输出。

此外,您可以开始了解for循环如何工作并注意模式

答案 4 :(得分:1)

这个while循环是循环而x小于或等于5,并且在每次迭代中它增加变量z和x的值。

您可以使用调试器逐步查看所有值,也可以修改代码并从变量中打印所有值,如下所示:

int x;
int y;
int z;
int iteration = 1;

x = 1;
z = 1;

while (x <= 5)
{
  z = z + x;
  x = x + 1;
  iteration++;
  System.out.println("Iteration: " + iteration + " Values: x=" + x + " y=" + y + " z=" + z);
}

答案 5 :(得分:1)

while语句一直运行,直到条件为真,在你的情况下条件是x<=5,但让我们一步一步。

当代码第一次到达while时,您的条件为真,因为x=1,因此执行内部块z = 1 + 1 = 2x = 1 + 1 = 2,然后迭代重新开始,这一次z = 2 + 2 = 4x = 2 + 1 =3依此类推,直到x > 5呈现条件为false且程序退出while循环。那时z将是16。

答案 6 :(得分:0)

您可以像这样重写它,以使其更清晰:

x = 1;
z = 1;

while (x <= 5)
{
  z += x;
  x += 1;
}

Z在每个循环中递增x,而x递增1。

换句话说:

z = 1;

for (x = 1; x <= 5; x++)
{
  z += x;
}

我非常自信现在更容易手工追踪,不是吗?