Java 如何将对象指定给数组?
因此,我的数组当前分配了一个骰子对象的5个实例。我的问题是我有另一个类需要锁定一个骰子Java 如何将对象指定给数组?,java,arrays,Java,Arrays,因此,我的数组当前分配了一个骰子对象的5个实例。我的问题是我有另一个类需要锁定一个骰子 public class Yahtzee { OneDice[] dice = new OneDice[5]; public Yahtzee() { yahtzeeRoll(); //constructor } public void yahtzeeRoll() { for (int i
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();
}
}
然而我的骰子[我]=新的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);
}
我如何给每个骰子索引分配一个随机值,而不创建一组否定锁定的全新掷骰。至少在我看来这是个问题 听起来您需要跳过锁定的条目:
(其中,
rollIfUnlocked
将重新滚动单个模具,前提是它之前未被锁定)。不要每次滚动时重新初始化整个阵列。在现实生活中,在玩yahtzee游戏时,你不会每次掷骰子都去抓5个新骰子。按如下方式创建OneDice:
class OneDice {
int value;
boolean locked;
void roll(){
if(!locked)
value = Math.nextInt(6);
}
int getValue(){
return value;
}
void setLock(boolean lock){
locked = lock;
}
boolean isLocked(){
return locked;
}
}
为什么你要从构造函数调用那个方法,不是在构造器本身中做初始化部分?掷骰子和创建骰子是完全不同的事情。是的,我想我可以放一些东西,跳过任何被锁定但不确定如何完成的骰子,但他后来的建议似乎是一个更好的解决方案。谢谢你,因为我对java非常陌生,有点挣扎!
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
}
}
class OneDice {
int value;
boolean locked;
void roll(){
if(!locked)
value = Math.nextInt(6);
}
int getValue(){
return value;
}
void setLock(boolean lock){
locked = lock;
}
boolean isLocked(){
return locked;
}
}