用于循环理解

时间:2013-03-11 04:12:19

标签: java

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

例如这段代码:

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来自哪里?

7 个答案:

答案 0 :(得分:3)

正在打印的数字不会影响变量count

由于计数从1开始并且每次从count = count+2增加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

答案 1 :(得分:3)

它来自3 * 3count1开始,在第一个循环后通过3递增到count = count + 2。如果您这样做,则应该出现您所描述的行为:

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

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

答案 2 :(得分:3)

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

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来自哪里。

答案 3 :(得分:1)

代码不会将3*count分配回count,而只会打印该值。

循环运行时,count取值{1,3,5,7,9}。在每次迭代中,3*count的值打印到stdout,count未被修改


一步一步:

  1. count初始化为1。
  2. 3*count + " "打印到stdout。 (你得到3,count 的值仍为1
  3. count增加2,将count设置为3。
  4. 3*count + " "打印到stdout。 (count现在的值为3,因此您获得9,再次count未被修改)
  5. count增加2,将count设置为5。
  6. 输出15,count仍未修改。
  7. count再次增加2,将count设置为7。
  8. 输出21。
  9. count增加到9。
  10. 输出27。
  11. count增加到11。
  12. 测试count < 10失败,因此退出循环。

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

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

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

答案 4 :(得分:1)

打开循环中的计数,你会看到发生了什么:

System.out.print("count: " + count + " (3*count): " + 3*count + "\n");

答案 5 :(得分: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) + " " );
}

计数在循环完成第一次迭代之后才第一次递增。

答案 6 :(得分:0)

count
1     *3=
3     *3=
5     *3=
7     *3=
9     *3=
相关问题