我不确定循环是如何工作的,任何人都可以向我简要解释一下吗?
例如这段代码:
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 :(得分: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 * 3
。 count
从1
开始,在第一个循环后通过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
未被修改。
一步一步:
count
初始化为1。3*count + " "
打印到stdout。 (你得到3,count
的值仍为1 )count
增加2,将count
设置为3。3*count + " "
打印到stdout。 (count
现在的值为3,因此您获得9,再次count
未被修改)count
增加2,将count
设置为5。count
仍未修改。count
再次增加2,将count
设置为7。count
增加到9。count
增加到11。count < 10
失败,因此退出循环。将此行为与以下代码段进行对比,后者可能符合您的预期:
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=