如何在Java中多次打印对象?

时间:2016-02-10 22:49:21

标签: java

我正在开发一个应该打印金字塔的程序。金字塔的底座是14个街区。块是(30,12)像素。将打印金字塔的小程序的尺寸为(800,400)。基本块从(100,380)开始。我想如果我复制那个块并在x方向上移动30个像素14次,我将完成基础。我很难做到这一点。我用循环复制并移动块但不起作用。 我究竟做错了什么?

import acm.graphics.GRect;

import acm.program.*;

public class Pyramid extends GraphicsProgram 
{

    public static final int BRICK_WIDTH = 30;

    public static final int BRICK_HEIGHT = 12;

    public static final int BRICK_IN_BASE = 14;

    public void run() 
    {
        setSize(800,400);
        GRect rec = new GRect (100,380,BRICK_WIDTH,BRICK_HEIGHT);
        for (int i = 0; i<14; i++)
        {
            rec.move(30,0);
            add(rec);
        }

    }

}

4 个答案:

答案 0 :(得分:1)

查看for循环中的条件。当i大于14时,你告诉编译器太循环,这永远不会成立。 也请更改i < 14

答案 1 :(得分:1)

程序中只有一个矩形。 add()方法多次添加同一个对象;你需要每次都创建一个新的。

答案 2 :(得分:0)

你需要改变你的for循环条件,我永远不会大于14,应该小于。

此外,您应该制作一个新的Grect,并且只需将每个新的x值更改为30

import acm.graphics.GRect;

import acm.program.*;

public class Pyramid extends GraphicsProgram 
{

    public static final int BRICK_WIDTH = 30;

    public static final int BRICK_HEIGHT = 12;

    public static final int BRICK_IN_BASE = 14;

    public void run() 
    {
        setSize(800,400);
        int x = 100;
        int y = 380;
        for (int i = 0; i<14; i++)
        {
            GRect rec = new GRect (x, y,BRICK_WIDTH,BRICK_HEIGHT);
            x += BRICK_WIDTH;
            add(rec);
        }

    }

}

答案 3 :(得分:0)

你不是在重复它,你只是移动它。请尝试以下方法:

public void run() {
    setSize(800,400);
    int x=100, y=380;
    GRect rec;
    for (int i = 0; i<BRICK_IN_BASE; i++) {
        rec = new GRect (x, y, BRICK_WIDTH, BRICK_HEIGHT);
        add(rec);
        x += BRICK_WIDTH;
    }
}