gpt4 book ai didi

java - 用新对象填充对象数组

转载 作者:行者123 更新时间:2023-12-02 04:41:14 25 4
gpt4 key购买 nike

我正在尝试用新对象填充对象数组。这是代码:

主类

public class Bejeweled extends JFrame{

public Bejeweled(){
Board board = new Board();
getContentPane().add(board);
board.start();
}

public static void main(String[] args){
Bejeweled game = new Bejeweled();
}

板类

public class Board extends JPanel{

final int BOARDHEIGHT = 8;
final int BOARDWIDTH = 8;
Gem[] gems;

public Board(){
gems = new Gem[BOARDHEIGHT * BOARDWIDTH];
}

public void start(){
fillBoard();
}

public void fillBoard(){
Arrays.fill(gems, new Gem());
for(Gem gem : gems){
System.out.println(gem.type); //**This was expected to print random numbers**
}
}
}

gem 级

public class Gem {

public int type;

public Gem(){
this.type = genType();
}

public int genType(){
return (int) (Math.random() * 7);
}

}

问题是所有对象看起来都是一样的。我知道我应该将类型封装在 Gem 类中,但我试图限制我在此处发布的代码量。

从主类创建一个新的 Board,在 Board 类中,Gem[] 填充有新创建的 Gem(Gem 类)。

最佳答案

Arrays.fill 使用您提供的值填充数组,在本例中是 Gem 的特定实例。相反,您需要使用 for 循环并将每个数组元素设置为不同的 Gem:

for(int i = 0; i < gems.length; i++) {
gems[i] = new Gem();
}

请注意,如果您确实有一 block 8x8 板,那么拥有 Gem[8][8]Gem[8*8] 更可取。

关于java - 用新对象填充对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com