我正在阅读Head First Java一书。本练习的输出应为:
a-b c-d
我试着把它弄好但是我很挣扎,所以我放弃了,看了下面的答案:
class Shufflel {
public static void main(String[] args){
int x = 3;
while (x > 0) {
if (x > 2){
System.out.print("a");
}
x = x - 1;
System.out.print("-");
if (x == 2){
System.out.print("b c");
}
if (x==1){
System.out.print("d");
x = x - 1;
}
}
}
}
我无法理解为什么
x = x - 1;
System.out.print("-");
和
x = x - 1;
位于它们所在的位置。
我无法提出一个逻辑上的理由,为什么代码行必须专门去他们必须去的地方而不是在其他位置,例如在if语句中或在{{1}下面} - part。
此外,它甚至没有让我想到这一点:while(x > 0){}
代码行在底部。我完全不知道为什么会这样。
答案 0 :(得分:0)
我们已初始化
第一步:x = 3;
现在我们检查if(x > 2)
true 并打印(" a")
之后,x = x - 1
,即 x = 2 ,我们打印(" - ")
我们再次测试if(x == 2)
true 并打印(" b c")
现在我们测试if(x == 1)
false ,所以我们什么都不做,
我们再次重启循环:
if(x>2)
false ,因为此位置x = 2,
然后x = x-1
所以 x = 1 ,我们打印(" - "),最后if(x==1)
为真,所以我们打印("在x = x -1之后d")和 x = 0 。然后我们离开循环,因为x不是> 0了。