int i, tem = 3;
i = tem;
for (int x = 0; x <= i; x++) {
for (int j = 1; j< tem; j++) {
System.out.println("a");
}
}
上面的代码打印a
8 次。我不明白为什么。
for (int j = 1; j < tem; j++)
上面的代码运行 j=1
到 j=2
,即 2 次并将打印
a
a
现在 for 循环
for (int x = 0; x <= i; x++)
将执行上述打印4次(x = 0 to 3
(。因此,总体而言,您的代码将打印 8 次。
a //x=0
a
a //x=1
a
a //x=2
a
a //x=3
a
考虑迭代一次 x=0 和 tem=3,因此内部 for 循环在条件 j=1 和 j=2 下迭代两次。第二次迭代现在 x=1 和 tem=3 在这种情况下,内循环也迭代两次 j=1 和 j=2 .这个过程在 x=2 和 x=3 时也继续,所以最后第一个循环条件被传递 4 次,即 x=0,x=1,x=2 和 x=3 和内部循环条件通过两次,每个第一个循环条件被传递,所以它打印 4*2 次,即八次
它不应该打印"a"8次。以下程序打印"a"4*3=12次。
public class HelloWorld{
public static void main(String []args){
int i, tem = 3;
i = tem;
for (int x = 0; x <= i; x++) {
for (int j = 1; j <= tem; j++) {
System.out.println("a");
}
}
}
}
尝试执行上述程序,您将获得正确数量的"a"(12 次(而不是 8 个 a。
前for
从 0 迭代到 3,即 4 次。
第二个for
从 1 迭代到 3,即 3 次。
由于第一个for
在第二个内部,打印将发生 3 次 * 4,即 12 次。
如果您需要它是 8 次打印,您应该在第一个或第二个for
中更改<
的<=
。
调试器很有用,在这种情况下,您不时循环 打印索引以查看/证明"逻辑">
您的代码是 for 循环中的索引的陷阱 但您可以替换打印行并验证
- 外环从0到3:4次
内循环为1到2:2次
尔格 4x2 次打印字符 A
例:
public static void main(String[] args) {
int i, tem = 3;
i = tem;
for (int x = 0; x <= i; x++) {
for (int j = 1; j < tem; j++) {
System.out.println("x: " + x + ",j:" + j);
}
}
}