-3

我不确定 for 循环是如何工作的,任何人都可以向我简要解释一下吗?

例如这段代码:

int count;

for(count=1;count <10; count = count+2)
System.out.print((3*count) + " " );

答案是:3 9 15 21 27,但9从哪里来?

让我们假设第一个计数被执行1+2=3,所以3*1 = 3

现在我们不是假设将3与 相加2然后乘以 3吗?

5*3 = 15,那么9从哪里来?

4

7 回答 7

3

打印出来的数字不会影响变量count

由于 count 从 1 开始,并且每次从 1 开始增加 2 count = count+2,它将是 1,3,5,7 。

然后将其乘以 3,得到您所看到的输出。

1 * 3 = 3
3 * 3 = 9
5 * 3 = 15

要获得您希望count在循环内更改的输出。

for(count=1;count <10; count = count+2)
count = count*3;
System.out.print((count) + " " );

这将输出 15 作为第二个数字然后停止,因为它将大于 10 以完成 forloop

于 2013-03-11T04:14:40.417 回答
3

它来自3 * 3. 在第一个循环之后count开始1并递增到3via 。count = count + 2如果您这样做,您所描述的行为应该会发生:

for (/*snip*/) {
    count = 3 * count;
}

这将在循环的第二次迭代中输出 15。

于 2013-03-11T04:15:07.540 回答
3

for 循环的 3 个部分,用分号分隔,给出一个初始赋值(在进入循环之前只执行一个)、一个条件(在进入循环之前检查每次迭代)和一个更新(它在每次迭代后执行)。因此我们有下表

count  printed  condition
 1      3         1 < 10
 3      9         3 < 10
 5     15         5 < 10
 7     21         7 < 10
 9     27         9 < 10
11     --        11 < 10

这应该清楚 9 的来源。

于 2013-03-11T04:19:39.883 回答
1

该代码不会分配3*countcount,它只是打印该值。

当循环运行时,count 取值 {1, 3, 5, 7, 9}。在每次迭代中, 的值3*count都会打印到标准输出,count不会被修改


一次迈出这一步:

  1. count初始化为 1。
  2. 3*count + " "打印到标准输出。(你得到 3,count 仍然有 1 的值
  3. count增加 2,设置count为 3。
  4. 3*count + " "打印到标准输出。(count现在的值为 3,所以你得到 9,同样count没有修改)
  5. count增加 2,设置count为 5。
  6. 输出 15,count仍未修改。
  7. count再次增加 2,设置count为 7。
  8. 输出 21。
  9. 增加到count9。
  10. 输出 27。
  11. 增加到count11。
  12. 测试count < 10失败,因此退出循环。

将此行为与以下代码段进行对比,它可能符合您的预期:

int count;

for(count=1;count <10; count = count+2)
{
    count = 3*count;
    System.out.print((count) + " " );
}

但是这个循环也只会对count{1, 5} 中的值执行,因为 17 大于 10。

于 2013-03-11T04:15:25.540 回答
1

打印出循环内的计数,您将看到发生了什么:

System.out.print("count: " + count + " (3*count): " + 3*count + "\n");
于 2013-03-11T04:16:11.717 回答
1

count 从 1 开始,变为值 {1,3,5,7,9}。运行此代码,您将能够亲眼看到发生了什么:

for(count=1;count <10; count = count+2) {
    System.out.println("For count = " + count + ", Result: " + (3*count) + " " );
}

count 在循环完成第一次迭代之前不会第一次增加。

于 2013-03-11T04:16:41.883 回答
0
count
1     *3=
3     *3=
5     *3=
7     *3=
9     *3=
于 2013-03-11T04:16:13.220 回答