Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助理解绘制棋盘的代码吗_Java - Fatal编程技术网

Java 需要帮助理解绘制棋盘的代码吗

Java 需要帮助理解绘制棋盘的代码吗,java,Java,本书使用此代码绘制棋盘。我唯一的问题是理解棋盘上各个方块的绘制顺序。当我进行计算时,它只在从左上到右下的对角线方向上用正方形填充棋盘。书中说代码对每一个方块循环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(1

本书使用此代码绘制棋盘。我唯一的问题是理解棋盘上各个方块的绘制顺序。当我进行计算时,它只在从左上到右下的对角线方向上用正方形填充棋盘。书中说代码对每一个方块循环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; 
     }
导入acm.program.*;
导入acm图形。*;
公共类棋盘扩展图形程序{
公开募捐{
double sqSize=(double)getHeight()/N_行;
对于(int i=0;i
您有两个循环-第二个循环通过每个值0-7循环,总共循环8次,因为这是第一个循环运行的次数。在您的解释中,您似乎同时递增两个值,就好像只有一个循环每次递增两个值一样

在循环中打印i和j的值可能会有所帮助

(i,j)

(0, 1) (0, 2) (0, 3) ...
(1, 1) (1, 2) (1, 3) ...
...

这是正确的吗?内部循环完成,然后其他循环上升一个值,内部循环使用新的x值再次运行?@JessicaM:是的,第一个循环将执行括号中的所有内容8次。大括号内是另一个循环,因此第二个循环将执行8次;每一次,第二个循环中的j也将从0到7。伯特的回答和建议都很好。快速提问。内部循环如何确定要更改的值。x是外环而y是内环的信号是什么?使用变量
j
的for循环位于使用变量
i
的for循环的花括号内。这些变量通过行
double y=i*sqSize分配给
x
y
双x=j*sqSize同样,您可以移动行
双y=i*sqSize在内部循环之外-
i
每次都是相同的值,因此每次都在进行不必要的计算。