Java 嵌套循环混淆

Java 嵌套循环混淆,java,for-loop,nested-loops,Java,For Loop,Nested Loops,下面是我的手绘输出 Expected output: 27 6 1 0 i: 1 j: 1 m: 1 您手工跟踪代码是错误的。让我解释一下 将代码分成两部分。第一部分: Handtraced output: 54 27 9 4 2 0 i: 0 j: 0 m: 0 i: 1 j: 1 m: 1 第二部分: ---- while loop ---- k = 109, i = 3 k = 54, i = 6 => print k / 2 = 27 ---- while loop ---

下面是我的手绘输出

Expected output:
27
6
1
0
i: 1
j: 1
m: 1

您手工跟踪代码是错误的。让我解释一下

将代码分成两部分。第一部分:

Handtraced output:
54 
27
9
4
2
0
i: 0
j: 0
m: 0
i: 1 
j: 1
m: 1
第二部分:

---- while loop ----
k = 109, i = 3
k = 54, i = 6 => print k / 2 = 27
---- while loop ----
k = 27, i = 3 
k = 13, i = 6 => print k / 2 = 6
---- while loop ----
k = 6, i = 3 
k = 3, i = 6 => print k / 2 = 1
---- while loop ----
k = 1, i = 3 
k = 0, i = 6 => print k / 2 = 0
----> k == 0, break while loop
for(int i=0;i<2;i++){
对于(int j=0;j<2;j++){
对于(int m=0;m

打印i,j,m值的条件是
m==j==i
,并且
i,j
只有2个值
0,1
,但是
m
m
循环生成
的条件在
i=0
m=0
时被忽略。所以唯一的输出:
i=j=m=1

你能提供你得到的两个输出吗?当然给我一秒钟。你的预期输出和实际输出是什么?你应该将
i:0
j:0
m:0
添加到你的预期输出中。谢谢,我完全理解了
    int k = 109;

    do {
        for(int i = 3; i < 9; i = i * 2) {
            if(k % i ==3) {
                k = k / 3;
            } else {
                k = k / 2;
            }
        }
        System.out.println(k);
    } while(k > 0);
---- while loop ----
k = 109, i = 3
k = 54, i = 6 => print k / 2 = 27
---- while loop ----
k = 27, i = 3 
k = 13, i = 6 => print k / 2 = 6
---- while loop ----
k = 6, i = 3 
k = 3, i = 6 => print k / 2 = 1
---- while loop ----
k = 1, i = 3 
k = 0, i = 6 => print k / 2 = 0
----> k == 0, break while loop
    for(int i = 0; i < 2; i++) {
        for(int j = 0; j < 2; j++) {
            for(int m = 0; m < i * 2; m++) {
                if(m == j && m == i) {
                    System.out.println("i: " + i);
                    System.out.println("j: " + j);
                    System.out.println("m: " + m);
                }
            }
        }
    }