![](/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.