有助于理解循环代码

时间:2011-08-19 03:36:48

标签: java for-loop

我无法理解这段代码如何绘制完整的棋盘而不仅仅是8个方块

特别是:for-loop如何运作。

import acm.program.*;
import acm.graphics.*;

public class chbord extends GraphicsProgram {
    /* number of columns */
    private static final int Ncolumns = 8;
    /* number of rows*/
    private static final int Nrows = 8;

    public void run() {
        int sqSize = getHeight() / Nrows;
        for (int i = 0; i < Nrows; i++) {
            for (int j = 0; j < Ncolumns; j++) {
                int x = j * sqSize;
                int y = i * sqSize;

                GRect sq = new GRect(x, y, sqSize, sqSize);
                sq.setFilled(((i + j) % 2) != 0);
                add(sq);
            }
        }
    }
}

6 个答案:

答案 0 :(得分:2)

循环中有一个循环:

for (int i = 0; i < Nrows; i++) {
    for (int j = 0; j < Ncolumns; j++) 

每个循环有8次迭代:

/* number of columns */
private static final int Ncolumns = 8;
/* number of rows*/
private static final int Nrows = 8;

通过内循环进行64次迭代(8 x 8) - 每个国际象棋方格一次。

答案 1 :(得分:1)

虽然上面的两个海报都是正确的,但考虑到第二个循环每次运行8次,第一个循环运行。演示在每个循环中放置两个不同的System.out.println语句并查看它们的打印顺序。

答案 2 :(得分:1)

外环第一次运行时,内环完全运行(8次)。然后外循环再次运行,然后内循环再次完全运行(另外8次)。

这将持续到第八行。

因此您绘制了8行,但每行绘制为8列。

结果:绘制了所有64个方格。

特别是:它是如何for循环的。

For循环是编程的关键部分。以下是一些解释性文章:

答案 3 :(得分:0)

这是因为实际上有两个for循环,而不仅仅是一个循环。这称为“嵌套”循环,它是用于创建行x列网格(如棋盘)的典型方法。

答案 4 :(得分:0)

这是一个嵌套循环的例子 - 一个循环在另一个循环中。外部循环使得它包含的代码对于i的值在0和nrows-1之间执行,包括0和nrows。内部循环使得它包含的代码可以在0和ncols - 1之间的j值中执行。由于内部循环中的代码是针对i的n个值执行的,并且对于i的这些值中的每一个,m值为j,所以执行的总数是nm。

答案 5 :(得分:0)

外部和内部循环将创建一个NRows * NColumns网格,模数运算符(%)将为每个其他正方形着色,因为MOD 2只有两个值。