在Java中使用带有for循环的GRect会导致错误

时间:2015-07-25 17:40:58

标签: java for-loop graphics

我正在尝试使用Java和Grect class来绘制金字塔。要画一块砖,这很简单:

import acm.graphics.*;
import acm.program.*;

import java.awt.*;

public class Pyramid extends GraphicsProgram {

/** Width of each brick in pixels */
private static final int BRICK_WIDTH = 30;

/** Height of each brick in pixels */
private static final int BRICK_HEIGHT = 12;

/** Number of bricks in the base of the pyramid */
private static final int BRICKS_IN_BASE = 14;

public void run() {


    GRect brick1 = new GRect(50, 400, BRICK_WIDTH, BRICK_HEIGHT);
    add(brick1);

}

为避免重复代码,我想像这样使用for循环:

for (int i=0; i<14; i++){
    GRect brick[i] = new GRect(50, 400, BRICK_WIDTH, BRICK_HEIGHT);
    add(brick[i]);
}

(我在上面的例子中意识到砖块会相互叠加,我只是想了解为什么我不允许使用for循环来执行此操作。)

我在Eclipse中收到以下消息:

“此行的多个标记 - 令牌“i”上的语法错误,删除此令牌 - 类型不匹配:无法从GRect转换为Grect [] -Grect无法解析为“

类型

为了避免犯下“不要重复自己”的罪,我应该采取什么样的方法?

2 个答案:

答案 0 :(得分:0)

您没有正确创建阵列。您将一个砖块的实例分配给一个数组。尝试首先在循环外创建数组,如下所示。

GRect bricks[] = new bricks[14];

for (int i = 0; i < 14; i++)
{
    bricks[i] = new GRect(50, 400, BRICK_WIDTH, BRICK_HEIGHT);
    add(bricks[i]);
}

答案 1 :(得分:0)

您的想法是正确的,但您没有正确使用Java数组语法和逻辑。您可以使用它,例如:

GRect brick = new GRect[14]
for (int i=0; i<14; i++){
   brick[i] = new GRect(50, 400, BRICK_WIDTH, BRICK_HEIGHT);
   add(brick[i]);
}

有关详细信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

顺便说一句,在这种情况下,你真的不需要数组,你只需要for循环。