我正在尝试使用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无法解析为“
类型为了避免犯下“不要重复自己”的罪,我应该采取什么样的方法?
答案 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循环。