[英]Drawing a Checkerboard using nested for loops
关于嵌套循环的使用,我有几个问题。 在本书的这个示例中,它使用嵌套的for循环绘制典型的棋盘格。
1)当我假设以下代码说棋盘方格的绘制顺序从左到右垂直向下直到绘制整个棋盘时,我的理解是正确的吗?
2)我对最里面的for循环中double x和double y的用途有疑问。 是否计算它们是为了将一个正方形与另一个正方形隔开? 您是否可以针对double x和double 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;
}
1)当我假设以下代码说棋盘方格的绘制顺序从左到右垂直向下直到绘制整个棋盘时,我的理解是正确的吗?
这是对的。 一行一行,从左到右,从上到下。
2)我对最里面的for循环中double x和double y的用途有疑问。 是否计算它们是为了将一个正方形与另一个正方形隔开? 您是否可以针对double x和double y进行扩展,以及一个循环的每个循环会发生什么?
它们是绘制下一个正方形的位置的坐标。 具体来说,它们是正方形左上部分的坐标。 您可以通过简单地乘以正方形的宽度来算出所有正方形的起点,就像这样做一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.