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);
}
}
}
}