0
本书使用此代码绘制棋盘。我遇到的唯一问题是了解在棋盘上绘制单个正方形的顺序。当我进行我的计算时,它只填充棋盘格,从左上角到右下角的对角线方向。这本书说,代码为每个方块执行64次循环,但我不确定它是如何执行64次的。需要帮助了解绘制棋盘的代码
例如让我们说的getHeight()= 72
sqSize = 9
在最内层循环移动
双X = 0 * 9 ===> 0
双Y = 0 * 9 ===> 0
GRect(0,0,9,9,);
双X = 1 * 9 ===> 9
双Y = 1 * 9 ===> 9
GRect(9,9,9,9,...);
双X = 2 * 9 ===> 18
双Y = 2 * 9 ===> 18
GRect(18,18,9,9);
等等
import acm.program.*;
import acm.graphics.*;
public class Checkerboard extends GraphicsProgram {
public void run(){
double sqSize = (double) 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 sq = new GRect(x, y, sqSize, sqSize);
sq.setFilled((i + J) % 2 !=0);
}
}
}
private static final int N_ROWS = 8;
private static final int N_COLUMNS = 8;
}
这是正确的吗?内部循环完成后,其他循环上升一个值,内部循环再次运行一个新的X值? –
@JessicaM:是的,第一个循环将执行8次大括号中的所有操作。在大括号内是另一个循环,所以第二个循环将被执行8次;每次,第二个循环中的j也会从0-7变为0。伯特的回答和建议都很好。 – arcy
快速问题。内部循环如何确定要更改哪个值。 x是外部循环而y是内部循环的信号是什么? –