Java 使用while循环递增奇数值会显示错误的必需值
为什么随附的代码给了我这个输出:Java 使用while循环递增奇数值会显示错误的必需值,java,Java,为什么随附的代码给了我这个输出: 3 , 5 , 7 , 9 它应该只显示偶数值 public static void main (String [] args){ int i = 1; while ( i < 10 ){ if ((i++)%2 == 0){ System.out.println(i); } }} publicstaticvoidmain(字符串[]a
3 , 5 , 7 , 9
它应该只显示偶数值
public static void main (String [] args){
int i = 1;
while ( i < 10 ){
if ((i++)%2 == 0){
System.out.println(i);
}
}}
publicstaticvoidmain(字符串[]args){
int i=1;
而(i<10){
如果((i++)%2==0){
系统输出打印LN(i);
}
}}
这是因为您正在if中执行i++
。此处的后增量表示条件中计算的值是预增量,但当到达print语句时,它已递增。尝试在if之后递增。尝试以下代码:
public static void main (String [] args){
int i = 1;
while ( i < 10 ){
if ((++i)%2 == 0){
System.out.println(i);
}
}}
publicstaticvoidmain(字符串[]args){
int i=1;
而(i<10){
如果(++i)%2==0){
系统输出打印LN(i);
}
}}
- 评估在增量之前完成
- 在增量之后进行打印
inti=1;
而(i<10){
如果((i++)%2==0){//i在增量之前的“偶数”时计算为true
System.out.println(i);//打印后增量i
}
}
要更正此问题,只需在打印值后将自动增量移到要增量的
i左侧:如果(i%2==0){System.out.println(i++);}
您正在用i检查条件,然后由于增量后的原因打印i+1。
int i = 1;
while ( i < 10 ){
if ((i++)%2 == 0) { // i evaluated true while "even" before increment
System.out.println(i); // printing post increment i
}
}