添加java对象两次
所以我对Java比较陌生,我一直在使用Eclipse。主要部分是最后三行,我想让对象添加java对象两次,java,eclipse,object,add,Java,Eclipse,Object,Add,所以我对Java比较陌生,我一直在使用Eclipse。主要部分是最后三行,我想让对象myBrick多次出现。如果我运行此命令,它只显示在第二个位置(最后一行)。可能吗 import acm.graphics.*; import acm.program.*; import java.awt.*; public class Pyramid extends GraphicsProgram { /** Width of each brick in pixels */ private
myBrick
多次出现。如果我运行此命令,它只显示在第二个位置(最后一行)。可能吗
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() {
double windowWidth = 756;
double windowHeight = 494;
int numberOfBricks = (BRICKS_IN_BASE*(BRICKS_IN_BASE+1))/2;
double emptySpace = windowWidth - (BRICK_WIDTH*BRICKS_IN_BASE);
int cushion = (int)emptySpace/2;
GRect myBrick = new GRect(BRICK_WIDTH, BRICK_HEIGHT);
add(myBrick, cushion, (windowHeight-BRICK_HEIGHT));
add(myBrick, (cushion+BRICK_WIDTH), (windowHeight-BRICK_HEIGHT));
}
}
我认为问题可能在于,当您使用第二个add()方法时,它使用的是同一个myBrick对象,而不是创建第二个myBrick对象。尝试为第二个add()函数创建一个新的GRect对象。第二个
add()
使用与第一个相同的对象引用。Java是一种传递值语言,但它将引用的值传递给对象。这意味着第一个add()
对myBrick
所做的任何突变都将被第二个add()
调用看到,我确信这违反了程序的语义。(我建议你阅读)
GRect
对象的构造似乎并不太复杂,因此为什么不复制此指令并将其用于调用的每个第一个参数?这样,您可以确保有两个GRect
对象以相同的状态开始,但修改一个对象不会影响另一个对象。正如其他人所指出的,如果不查看add方法,很难给出答案。但如果我没有错的话,也许你在找这样的东西
这样,在列表中您将有三个GRect对象。您可以迭代并获取GRect对象的值。add()是什么函数在这里?我相信它会将对象添加到窗口中多次出现在哪里?如果您是java新手。在记事本中编写程序并使用命令行运行它们…只是一个建议我希望它在出现的图形窗口中多次出现。这就是问题所在,我想多次添加同一个对象。如果不查看add(),很难找出问题所在。可能是add()方法在调用时用新值覆盖了以前的值。。。有比add()更好的方法吗?我有一个无限多的
GRect
s,它们需要在不同的位置编写一个循环,为每次调用add()
创建一个新的GRect对象。