减量开关语句输出

扎伊德·沙瓦因(zaid shawahin)

基本上输出显示为i = 11,尽管每次我尝试对其进行跟踪时,答案都会9随我出现。我一直在玩一些代码,以查看多余的2来自何处。在这种情况下3/4,但我无法找到任何增量状态,i尽管它4在此时已变为有人可以帮我解释一下吗?

public class out2 {
    public static void main(String args[]) {
        int i = 0, j = 7;
        boolean f = true;
        while (i <= 4) {
            switch (--j) {
                case 1:
                case 2:
                    i = f ? i + 7 : i + 1;
                    break;
                case 3:
                case 4:
                    i = !f ? j++ : j--;
                    break;
                case 5:
                case 6:
                    i = (i == j) ? i - 1 : i + 1;
            }
        }
        System.out.println("j=" + j + "\ni=" + i);
    }
}
罗斯·德鲁

使用调试器逐步执行此操作将向您显示...

循环1

--j所以j递减

i = (i == j) ? i - 1 : i + 1; = i+1

...所以i=1(i = 0 + 1)i不等于j

循环2

--j = 5

i = (i == j) ? i - 1 : i + 1; = i+1

...所以i=2(i = 1 + 1)i不等于j

循环3

--j = 4

i = !f ? j++ : j--;= j--= i=j; j++=i=j; j=j-1

...所以i=4(i = j)&j=3(j = 4 -1在分配给i之后发生)!f是错误的

循环4

--j = 2

i = f ? i + 7 : i + 1; = i+7

...所以i=11(I = 4 + 7)&j=2f是真

...你怎么得到9?

笔记

  • 测试!true只是说“不正确”,是正确的;当然不是。
  • i=j++分配ji然后递增j
  • i=++j增量,j然后分配给i
  • 这样做i = true ? j++ : j--将分配ji然后递增j,这就是为什么您得到9的原因,@ GameDroids发现您没有分配给i

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章