这个for(i--;i>j;j+=2,i-=j%3)是什么意思?
What is the meaning of this for(i--;i>j;j+=2,i-=j%3)?
int i =14;
int j =2;
for(i--;i>j;j+=2,i-=j%3){
System.out.println(i + " ");
}
它 returns 13,12,12,10 但我不明白背后的原因!
i
缩减为13作为起始条件。 i>j
是继续循环的条件,所以如果 j>=i
则循环退出。在每次迭代中,j
增加 2,i
减少 j%3
(这是 j
除以 3 后的余数)。
我建议你在纸上手动计算 i
和 j
来让自己满意这个结果。
假设您熟悉 while 循环。您的代码与以下代码相同:
int i = 14;
int j = 2;
i -= 1;
while(i > j) {
System.out.println(i + " ");
j += 2;
i -= j % 3;
}
有关 for
循环的更多信息,请参阅 java docs。
for
循环的语法:
for (initialization; termination; increment) {
statement(s)
}
您可以提供多个初始化、终止或增量。在您的代码中,您提供了多个增量表达式。
您可以通过如下所示创建 table 来分析您的代码,尤其是循环。您可以创建一个 table,其中行代表迭代,列代表表达式,它们的执行顺序从左开始:
i
j
i > j
System.out.println(i + " ");
j += 2
i -= j % 3
13
2
true
13
4
12
12
4
true
12
6
12
12
6
true
12
8
10
10
8
true
10
10
9
9
10
false
你应该熟悉for循环第一部分正常启动for循环的计数器。第二部分定义进入下一轮循环的条件,第三部分更新下一轮的计数器。
开始for循环i被i--设置为13
- 13 大于 2。
- 因此打印 i = 13。
- 更新计数器 j = 4 by j+=2 and i= 12 by i-=4%3 alias i-=1.
条件 12 大于 4 通过。
- 因此打印 i = 12。
- 更新计数器 j = 6 by j+=2 and i= 12 by i-=6%3 alias i-=0
条件 12 大于 6 通过。
- 因此打印 i = 12。
- 更新计数器 j = 8 by j+=2 and i= 10 by i-=8%3 alias i-=2
条件 10 大于 8 通过。
- 因此打印 i = 10。
- 更新计数器 j = 10 by j+=2 and i= 9 by i-=10%3 alias i-=1
条件 9 大于 10 失败。
- 退出循环。
int i =14;
int j =2;
for(i--;i>j;j+=2,i-=j%3){
System.out.println(i + " ");
}
它 returns 13,12,12,10 但我不明白背后的原因!
i
缩减为13作为起始条件。 i>j
是继续循环的条件,所以如果 j>=i
则循环退出。在每次迭代中,j
增加 2,i
减少 j%3
(这是 j
除以 3 后的余数)。
我建议你在纸上手动计算 i
和 j
来让自己满意这个结果。
假设您熟悉 while 循环。您的代码与以下代码相同:
int i = 14;
int j = 2;
i -= 1;
while(i > j) {
System.out.println(i + " ");
j += 2;
i -= j % 3;
}
有关 for
循环的更多信息,请参阅 java docs。
for
循环的语法:
for (initialization; termination; increment) {
statement(s)
}
您可以提供多个初始化、终止或增量。在您的代码中,您提供了多个增量表达式。
您可以通过如下所示创建 table 来分析您的代码,尤其是循环。您可以创建一个 table,其中行代表迭代,列代表表达式,它们的执行顺序从左开始:
i | j | i > j | System.out.println(i + " "); | j += 2 | i -= j % 3 |
---|---|---|---|---|---|
13 | 2 | true | 13 | 4 | 12 |
12 | 4 | true | 12 | 6 | 12 |
12 | 6 | true | 12 | 8 | 10 |
10 | 8 | true | 10 | 10 | 9 |
9 | 10 | false |
你应该熟悉for循环第一部分正常启动for循环的计数器。第二部分定义进入下一轮循环的条件,第三部分更新下一轮的计数器。
开始for循环i被i--设置为13
- 13 大于 2。
- 因此打印 i = 13。
- 更新计数器 j = 4 by j+=2 and i= 12 by i-=4%3 alias i-=1.
条件 12 大于 4 通过。
- 因此打印 i = 12。
- 更新计数器 j = 6 by j+=2 and i= 12 by i-=6%3 alias i-=0
条件 12 大于 6 通过。
- 因此打印 i = 12。
- 更新计数器 j = 8 by j+=2 and i= 10 by i-=8%3 alias i-=2
条件 10 大于 8 通过。
- 因此打印 i = 10。
- 更新计数器 j = 10 by j+=2 and i= 9 by i-=10%3 alias i-=1
条件 9 大于 10 失败。
- 退出循环。