【发布时间】:2026-01-12 06:55:02
【问题描述】:
所以基本上,我需要生成一个由 1 和 0 组成的数组,然后填充一定数量的矩形。矩形是“正方形”,需要形成更大的正方形。说,我希望我的大方块宽和高为 500 像素,并用 100 个方块填充,所以我需要一个长度为 10 的 10 个数组 - 我部分成功了 - 然后我需要填充小方块,具体取决于生成的数组的索引,例如,如果数组 1-1 为 1,则应填充正方形 1-1,依此类推。
public void run() {
int tableSize = readInt("Enter the size of the table in pixels: ");
int squareNumber = readInt("Enter the number of squares in a row: ");
filler(arrayGen(squareNumber), tableSize, squareNumber);
}
private double[] arrayGen(int A) {
double[] arr1 = new double[A];
for (int i = 0; i < arr1.length; i++) {
arr1[i] = (Math.random() < 0.5 ? 0 : 1);
}
return arr1;
}
private void filler(double[] A, int x, int y) {
for (int i = 0; i < A.length; i++){
for (int x1 = 0; x1 < x; x1+=(x/y)) {
GRect rect1 = new GRect (x1, 0, x/y, x/y);
rect1.setFilled(true);
rect1.setFillColor(Color.blue);
if (A[i] == 1) {
add(rect1);
}
}
}
}
}
这就是我想出的,它仍然缺少一些部分,即如何生成以下行,但就像我上面所说的,我的主要问题是数组。
谢谢!
【问题讨论】:
-
阵列的主要问题是什么?我真的说不出来。如果它/它们似乎是不必要的,我可以说这一代,所以也许抛弃这个想法。另外,如果您不确定是否会添加 GRect,我不会花费资源来实例化 GRect。检查是否应该先;然后创建它,然后添加它。
-
数组的问题在于,在filler中,程序只读取数组中的第一项,并决定将要添加的所有矩形都被填充/空
-
那么所有要添加但只有数组值为
1的矩形被填充? -
是的,完全正确。我不知道该怎么做
-
我回答了,但删除了。我认为查看 Eran 的答案可以让您上路。我的答案中的代码使您到达了正确填充 single 行矩形的位置,但是您希望拥有多个数组,因此第二次添加它会使我的代码过时。
标签: java arrays graphics generator