为什么会输出以下代码:13 15 17
我认为应该是:15 17 19
代码如下:
package com.example.barker;
class dog {
}
public class Bark {
public static void main(String[] args) {
Bark o = new Bark();
o.go();
}
void go(){
int y =7;
for(int x = 1; x<8; x++) {
y++;
if(x>4) {
System.out.print(++y + " ");
}
}
}
}
答案 0 :(得分:2)
我认为Anwer是对的。
我将解释代码的工作方式以便理解。
第一
y = 7
x = 0
以及第一次迭代后
y = 8(y ++;)和x = 1(int x = 1;)(不打印,因为x不大于4)
第二次迭代后
y = 9(y ++;)和x = 2(x ++;)(不打印,因为x不大于4)
第三次迭代后
y = 10(y ++;)和x = 3(x ++;)(不打印,因为x不大于4)
第四次迭代后
y = 11(y ++;)和x = 4(x ++;)(不打印,因为x不大于4)
第五次迭代后
y = 12(y ++;)和x = 5(x ++;)
现在x大于4,然后转到 System.out.print(++ y +“”);
这里您正在编写++ y,表示预递增
即增加y并打印
即y = 13和x = 6打印(13)
下一次迭代后
y = 14(y ++;),并且在打印 y 值之前先做++ y 即 y = 15(++ y;)打印(15)
下一次迭代后
y = 16(y ++;)并在打印 y 值之前进行++ y 即 y = 17(++ y;)打印(17)
因此输出为 13 15 17
谢谢,祝您编程愉快。
答案 1 :(得分:1)
按如下所示更改条件,以获得所需的结果。
for(int x = 1; x<10; x++) {
y++;
if(x>6) {
System.out.print(++y + " ");
}
}
答案 2 :(得分:0)
首先让我们了解for循环中发生的操作:
y ++将在代码行执行完毕后执行+1操作
++ y将首先执行+1操作,然后执行其余的代码行
现在,让我们看一下for循环:
for(int x = 1; x<8; x++) {
y++;
if(x>4) {
System.out.print(++y + " ");
}
}
对于每次迭代,我们将查看x和y的值:
x = 1,y = 7(第一次迭代开始)
x = 1,y = 8(迭代结束)
x = 2,y = 8(第一次迭代的开始)
x = 2,y = 9(迭代结束)
x = 3,y = 9(第一次迭代的开始)
x = 3,y = 10(迭代结束)
x = 4,y = 10(第一次迭代的开始)
x = 4,y = 11(迭代结束)
x = 5,y = 11(第一次迭代的开始)
x = 5,y = 12(y ++行)
x = 5,y = 13(x> 4,因此++ y执行)
逻辑已经很明显了,但是您可以继续自己调试它。
答案 3 :(得分:0)
希望这会有所帮助。 在这里,进行解释:
y=7 //At Start
当您进入循环时:
x = 1 and y = 8
x = 2 and y = 9
x= 3 and y = 10
x = 4 and y = 11
x = 5 // which makes the if condition true
y将变为12,如果System.out.print(++y + " ")
进入
它会先递增然后打印。
因此,它将打印y = 13
。
类似地,当x = 6时,y将为14,如果x为15,则以此类推。