仅创建一个表四次

时间:2018-01-12 08:06:44

标签: java

我已经把这些代码放到了无法获得预期效果的地方。

    for (int i = 2; i <= 4; i+=2/* FINISH ME */) {
        for (int j =1; j < 5; j++){

        System.out.println("2 times " + j + " = " + (i*j));
        }
    }

输出是,

2 times 1 = 2
2 times 2 = 4
2 times 3 = 6
2 times 4 = 8
2 times 1 = 4
2 times 2 = 8
2 times 3 = 12
2 times 4 = 16

我不明白为什么循环运行8次以及计算在四次之后如何运行?

3 个答案:

答案 0 :(得分:1)

以下是循环中发生的事情: 在第一个循环的最开始 i 设置为2,然后内循环开始,你得到:

2 times 1 = 2 
2 times 2 = 4
2 times 3 = 6
2 times 4 = 8

然后第一次迭代结束,所以2被添加到 i (i + = 2)然后检查 i <= 4 并且因为i == 4现在实际上它不那么或等于4 ,所以第二次迭代开始:

2 times 1 = 4 // i==4, so it is 4 times 1!!
2 times 2 = 8 //i==4, so it is 4 times 2!!
2 times 3 = 12
2 times 4 = 16

答案 1 :(得分:0)

在大多数情况下,确定嵌套for循环的运行次数只是乘法。将外循环运行的次数乘以内循环运行的次数。

下面:

for (int i = 2; i <= 4; i+=2) {
    for (int j =1; j < 5; j++){

    System.out.println("2 times " + j + " = " + (i*j));
    }
}

第一个循环运行2次。第一次i为2,第二次i为4.没有第三次,因为i6不小于或等于4

第二个循环更容易理解。你从1开始计算,直到它不再低于5,所以1,2,3,4, 4 次!

现在我们可以将4和2相乘得到8,这正是你的System.out.println行被调用的次数。

现在,让我们弄清楚ij的值。在嵌套的for循环中,内循环中的变量以比外循环中的变量更快的速率变化。只有在内循环结束后,外循环的变量才会发生变化。所以i从2开始,然后j变为1,2,3,4并且内循环结束。现在i为4,j再次为1,2,3,4。

现在让我们解决为什么输出显示明显错误的问题,例如2 times 4 = 16。这是因为你的print语句。您已经完成了它,因此始终以2 times然后j开头,然后是i * j的值。因此,当外部循环的第二次迭代中i更改为4时,您仍然打印2 times,而它应该是4 times。要解决此问题,只需执行以下操作:

System.out.println(i + " times " + j + " = " + (i*j));

答案 2 :(得分:0)

我对您的代码做了一些修改。希望这能帮助您理解您的问题。

    int loopCount = 0;
    for (int i = 2; i <= 4; i += 2) {
        for (int j = 1; j < 5; j++) {
            System.out.println("loopCount = " + ++loopCount + " : i = " + i + ", j = " + j);
        }
        System.out.println();
    }

输出:

loopCount = 1 : i = 2, j = 1
loopCount = 2 : i = 2, j = 2
loopCount = 3 : i = 2, j = 3
loopCount = 4 : i = 2, j = 4

loopCount = 5 : i = 4, j = 1
loopCount = 6 : i = 4, j = 2
loopCount = 7 : i = 4, j = 3
loopCount = 8 : i = 4, j = 4