我有一个关于创建正方形网格的问题。我使用嵌套的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);
}
}
}
答案 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)。