![](/img/trans.png)
[英]Need some assistance understanding tutorial code: Java - Class Constructors / Initializers
[英]Need assistance for understanding code for drawing a checkerboard
本书使用此代码绘制棋盘格。 我唯一的问题是了解棋盘格上各个正方形的绘制顺序。 当我进行计算时,它只会在棋盘上从左上角到右下角的对角线方向填充正方形。 这本书说代码对每个方块执行此循环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;
}
您有两个循环-第二个循环在每个值0-7之间循环,总共执行8次,因为这是第一个循环运行的次数。 在您的解释中,您似乎同时增加了两个值,好像每次循环中只有一个循环使两个值都增加一样。
在循环内打印i和j的值可能会有所帮助。
(i,j)
(0, 1) (0, 2) (0, 3) ...
(1, 1) (1, 2) (1, 3) ...
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.