[英]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.