Java 是我错了还是结果错了?
我有一个java示例,我知道这很简单,但我只是一个初学者。我在第8行和第9行遇到了一个问题:Java 是我错了还是结果错了?,java,if-statement,switch-statement,Java,If Statement,Switch Statement,我有一个java示例,我知道这很简单,但我只是一个初学者。我在第8行和第9行遇到了一个问题: while (tailFeathers > 1){ System.out.print(--tailFeathers + " ");} 我想它会打印52,因为1不大于1,但答案是E,也就是521。你能给我解释一下吗?我是错的还是奇怪的结果?非常感谢。请严格遵循逻辑 看来你同意第七行的说法。屏幕的输出为5 此时尾羽=3 3> 1因此,进入回路,在使用前减少尾羽 因此,屏幕输出现在
while (tailFeathers > 1){
System.out.print(--tailFeathers + " ");}
我想它会打印52,因为1不大于1,但答案是E,也就是521。你能给我解释一下吗?我是错的还是奇怪的结果?非常感谢。请严格遵循逻辑 看来你同意第七行的说法。屏幕的输出为5 此时尾羽=3 3> 1因此,进入回路,在使用前减少尾羽 因此,屏幕输出现在是5 2 此时尾羽=2 2> 1因此,进入回路,在使用前减少尾羽 所以屏幕输出现在是5 2 1 此时尾羽=1 1=1不要进入循环 屏幕输出为5 2 1 我想它会打印52,因为1不大于1,但答案是E,也就是521。你能给我解释一下吗 您认为当尾羽==1时不会输入环体是正确的,但您误解了将打印的内容 以下是循环:
while (tailFeathers > 1) {
system.out.print(--tailFeathers + " ");
}
假设输入循环体是因为tailfeaths==2,即>1。system.out.print-TAILFEATURES+语句将按照定义良好的顺序执行多项操作:
它将减小尾羽的值,即将尾羽设置为1,
它将调用库函数来创建新字符串1,以表示尾羽的新十进制值,
它将字符串1与字符串连接起来,以创建一个新字符串1,最后,
它将调用system.out.print1。
这里的关键概念是尾羽的含义。该表达式的值是变量递减后的尾羽值
如果你把它改成尾羽-,你会得到不同的结果。在这种情况下,表达式的值是尾羽在递减之前的值,即,在上面的示例中为2
记住这一点的方法是从左到右阅读:
-t表示首先减小t,然后使用t的新值,以及
t-表示首先使用t的原始值,然后在一段时间后减小t。
-计数器=>计数器=计数器-1。 它的值会立即更新,这就是pre操作符的工作方式。
另外,请记住最后一个循环中有while循环,因此它会递归打印,直到条件变为false。请将代码和结果作为文本粘贴到问题中。作为图像阅读是非常困难的。如果尾羽为2,2>1,并且由于-tailfeaths,它将打印1。请参阅@lucumt这是一个测验,它不是正确的。@s.L.Barth-monica这不是默认值内的情况,它是一个默认值,然后是另一个情况3。这就是为什么你需要在两个案例之间休息。