Java 不理解模数是如何工作的(Eclipse)
我刚刚开始一个Java入门教程,已经有一个关于什么(在我看来)是奇怪行为的问题。有人能澄清一下我是如何错误地看待这个工具的吗 为什么不输出奇数:Java 不理解模数是如何工作的(Eclipse),java,modulus,Java,Modulus,我刚刚开始一个Java入门教程,已经有一个关于什么(在我看来)是奇怪行为的问题。有人能澄清一下我是如何错误地看待这个工具的吗 为什么不输出奇数: for (int i = 0, j = 0; i < 100; ++i){ if ( i % 2 != 0){ System.out.print(i + "\t"); } ++i; ++j; if (j
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){
如果(i%2!=0){
系统输出打印(i+“\t”);
}
++i、 ++j;
如果(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){
如果(i%2==0){
系统输出打印(i+“\t”);
}
++i、 ++j;
如果(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){
如果(i%2>0){
系统输出打印(i+“\t”);
}
++i、 ++j;
如果(j>=10){
System.out.println();
j=0;
}
}
因为您要将i
增加两次,第一次是在中,第二次是在if
之间。因此,您的i
仅循环通过偶数。删除第二个增量,它将按预期工作
同时,你的j
只增加一次,因此你应该每行观察10个数字。因为你将i
增加两次,第一次在你的for
中,第二次在if
之间。因此,您的i
仅循环通过偶数。删除第二个增量,它将按预期工作
同时,你的<代码> j>代码>只增加一次,所以你应该遵守每行10个数字。
你每次递增<代码> i<代码>两次循环——一次在<代码> < <代码>循环本身,一次在身体的中间。
最终的结果是,如果(i%2!=0){
,当您到达时,i
本身只有偶数(0,2,4,…)
删除i的体内增量
;仅在循环本身的中增加。更改
++i; ++j;
到
你每次递增<代码> i <代码>两次循环——一次在<代码> < <代码>循环本身,一次在身体的中间。
最终的结果是,如果(i%2!=0){
,当您到达时,i
本身只有偶数(0,2,4,…)
删除i的体内增量
;仅在循环本身的中增加。更改
++i; ++j;
到
您的主要问题是“i++”在每个循环迭代中出现两次,因此只考虑i的其他每一个值(即偶数)。请从循环体中删除i++。您的主要问题是“i++”在每个循环迭代中出现两次,因此仅考虑i的其他每一个值(即偶数)从循环体中删除I++。你在循环的每次迭代中都会增加I
两次;删除I++
表达式中的一个。你在循环的每次迭代中都会增加I
两次;删除I++
表达式中的一个。哇..这是难以置信的短视我。谢谢你们的澄清。我会点击第一个答案作为正确答案。哇..我真是太短视了。谢谢你们的澄清。我会点击第一个答案作为正确答案。