gpt4 book ai didi

java - 如何将对象分配给数组?

转载 作者:行者123 更新时间:2023-11-30 04:16:37 25 4
gpt4 key购买 nike

所以我的数组当前分配了 5 个骰子对象的实例。我的问题是我有另一个类需要锁定骰子以防止使用。

   public class Yahtzee {
OneDice[] dice = new OneDice[5];

public Yahtzee() {
yahtzeeRoll(); //constructor
}

public void yahtzeeRoll() {
for (int i = 0; i != dice.length; i++) {
dice[i] = new OneDice();
}
public void lock(int which) {

dice[which - 1].lockDice();
}
}

但是我的 dice[i] = new OneDice();每次调用 yahtzeeRoll 时都会创建一组全新的随机数。

这里是传递which参数的方法。

   @Override
public void choose() {
int which;
Scanner sc = new Scanner(System.in);
System.out.println(getName() + " Rolling.");
hand.printYahtzee();

System.out.println("Would you like to lock dice 1? 1 for yes");
choice = sc.nextInt();
if (choice == 1) {
which = 1;
hand.lock(which);
}

如何为每个骰子索引分配一个随机值,而不创建一组全新的骰子来否定锁定。至少对我来说这似乎是问题?

最佳答案

听起来您只需跳过锁定的条目即可:

for (int i = 0; i < dice.length; i++) {
if (dice[i] == null || !dice[i].isLocked()) {
dice[i] = new OneDice();
}
}

要么,要么更改代码以使用新实例在构造函数中初始化 dice,但让您的 yahtzeeRoll 方法仅更改其中的值> 现有的解锁实例,而不是创建新实例。例如:

public Yahtzee() {
for (int i = 0; i < dice.length; i++) {
dice[i] = new OneDice();
}
rollUnlocked();
}

public void rollUnlocked() { // Renamed from yahtzeeRoll for clarity
for (OneDice die : dice) {
die.rollIfUnlocked(); // Or whatever method you want
}
}

(其中 rollIfUnlocked 会重新滚动单个骰子,前提是它之前未被锁定)。

关于java - 如何将对象分配给数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189379/

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