打印语句的输出不清楚


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=1j=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);
        }
    }
}

最新更新