2013-03-11 110 views
-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从哪里来?

+0

在第一次迭代中'count'将是1,并且3 * 1 = 3。在第二次迭代中'count'将是3,并且3 * 3 = 9。 – 2013-03-11 04:15:06

+0

为每个循环你的变量计数将有值1 3 5 7和9.所以值 – 999k 2013-03-11 04:15:42

+0

如果你只是问关于循环,为什么标记它的Java? – eLRuLL 2013-03-11 04:36:30

回答

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。

+0

非常感谢! – Ryan 2013-03-11 04:27:37

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大,以完成for循环

3

它来自3 * 3count开始于1并且在第一次循环之后通过count = count + 2增加到3。你所描述的行为应该发生如果你这样做:

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

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

+0

用户假设的好处。 – 2013-03-11 04:18:10

1

该代码不会将3*count指定回count,它只是打印该值。

循环运行时,count取值为{1,3,5,7,9}。在每次迭代中,将值3*count打印到stdout,,但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. 增量count至9
  10. 27输出
  11. 增量count至11
  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

+0

当你打印出来的时候,你可能不想再次用3来表示它...... – n00begon 2013-03-11 04:17:19

+0

@Glitch是的你是对的。谢谢。 – 2013-03-11 04:19:33

+0

非常感谢您 – Ryan 2013-03-11 04:28:13

1

打印出你的内循环计数,你会看到这是怎么回事:

System.out.print("count: " + count + " (3*count): " + 3*count + "\n"); 
0
count 
1  *3= 
3  *3= 
5  *3= 
7  *3= 
9  *3= 
+0

非常感谢您 – Ryan 2013-03-11 04:30:19

1

计数从1开始,变为值{1,3,5,7,9}。运行这段代码,你就可以看到自己发生了什么:

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

计数不增加首次后才循环已完成它的第一个迭代。

+0

非常感谢您 – Ryan 2013-03-11 04:28:41