在Java中制作以10的距离分隔的正方形网格

时间:2017-03-02 06:21:43

标签: java

我有一个关于创建正方形网格的问题。我使用嵌套的for循环来创建9X9的正方形网格但是我无法弄清楚如何使任意两个相邻正方形的边以10的距离分隔。下面是我的代码:

import java.awt.*;
import java.awt.geom.*;
import com.programwithjava.basic.DrawingKit;

public class CreateGrid {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DrawingKit dk = new DrawingKit("Grid");

        int x = 10, y = 30, width = 20, height = 20, step = 10;


        //make 9x9 grid
        for (int column = 0; column < 10; column ++) {
            for (int row = 0; row < 10 ; row ++) {
                //draw the rectangles
                Rectangle2D.Float square = new Rectangle2D.Float(x, y, width * row, height * column);
                dk.draw(square);


            }
        }

    }

1 个答案:

答案 0 :(得分:0)

对于初学者来说,在这里你不是画一个正方形网格,而是一堆重叠的矩形。绘制的所有矩形都有一个角(10,30),因为你永远不会改变x和y坐标。

这样做的正确方法是将宽度和高度保持为20,并更改嵌套for循环中的x / y坐标。以下应该做的工作

// There is no need for separate width/height since it is a square
int size = 20;
// Add the required gap between squares to the size
int displacement = size + 10;
for (int column = 0; column < 10; column ++) {
    for (int row = 0; row < 10 ; row ++) {
        //draw the rectangles
        Rectangle2D.Float square = new Rectangle2D.Float(x + (displacement * row), y + (displacement * column), size, size);
        dk.draw(square);
    }
}

编辑:此外,这将生成10 * 10网格,而不是9 * 9,因为您的计数从0到9(包括0和9)。