关于嵌套for循环的使用,我有几个问题。在本书的这个例子中,它使用嵌套for循环来绘制一个典型的棋盘。
1)当我假设下面的代码表示绘制棋盘方块的顺序是从左到右垂直向下直到绘制整个棋盘时,我的理解是否正确?
2)我对double x的目的有一些疑问,并且在内部最for for循环中加倍y。它们的计算是为了将一个方格间隔到下一个方格吗?你能扩展双x和双y的目的,以及一个循环的每个循环会发生什么?
import acm.program.*;
import acm.graphics.*;
public class checkerBoard extends GraphicsProgram{
public void run(){
double sqSize = getHeight() / N_ROWS;
for ( int i = 0; i < N_ROWS; i++){
for (int j = 0; j < N_COLUMNS; j++){
double x = j * sqSize;
double y = i * sqSize;
GRect rect = new GRect(x, y, sqSize, sqSize);
rect.setFilled((i+ j) % 2 !=0);
add(rect);
}
}
}
private static final int N_ROWS = 8;
private static final int N_COLUMNS = 8;
}
答案 0 :(得分:0)
1)当我假设下面的代码所说的时,我的理解是否正确 绘制棋盘方块的顺序将垂直向下 从左到右,直到绘制整个棋盘?
这是对的。逐行,从左到右,从上到下。
2)我对双x和双y的目的有一些疑问 在内部最里面的循环。他们是为这个计算的 将一个方格间隔到下一个方格的目的?你能扩展吗? double x和double y的目的以及每个循环中出现的情况 循环?
它们是绘制下一个方格的位置的坐标。具体来说,它们是正方形左上部分的坐标。您可以通过简单地乘以正方形的宽度来计算所有正方形的起点。