我刚刚开始介绍Java的入门教程,并且已经有一个关于什么(在我看来)作为奇怪行为的问题。有人可以澄清我是如何错误地看待这个工具的吗?
为什么这不输出奇数:
for (int i = 0, j = 0; i < 100; ++i){
if ( i % 2 != 0){
System.out.print(i + "\t");
}
++i; ++j;
if (j >= 10){
System.out.println();
j = 0;
}
}
但这确实是数字:
for (int i = 0, j = 0; i < 100; ++i){
if ( i % 2 == 0){
System.out.print(i + "\t");
}
++i; ++j;
if (j >= 10){
System.out.println();
j = 0;
}
}
即使是这样的东西也行不通:
for (int i = 0, j = 0; i < 100; ++i){
if ( i % 2 > 0){
System.out.print(i + "\t");
}
++i; ++j;
if (j >= 10){
System.out.println();
j = 0;
}
}
答案 0 :(得分:2)
每个循环增加i
两次 - 一次在for
循环本身,一次在正文中间。
最终结果是当你到达i
时,if ( i % 2 != 0){
本身只是偶数(0,2,4,...)。
删除i
的体内增量;只在for
循环本身增加。变化
++i; ++j;
到
++j;
答案 1 :(得分:1)
因为您要递增i
两次,首先是for
,第二位是if
之间。因此,您的i
仅循环偶数。删除第二个增量,它将按预期工作。
同时你的j
只增加一次,所以你应该每行观察10个数字。
答案 2 :(得分:1)
你的主要问题是“i ++”在每次循环迭代中出现两次,所以只考虑I的其他每个值(即偶数)。从循环体中删除I ++。