所以我有一个多个骰子的对象,我试图传递一个数组来一次分配所有的骰子
public DiceCollection(int numDice, int[] diceNumSides) {
this.numDice = numDice;
this.diceNumSides = diceNumSides;
Die[] dice = new Die[];
for (int i = 0; i < numDice; i++){
dice[i] = new Die(diceNumSides[i]);
}
}
并且在“Die [] dice = new Die [];中出现了3个错误
如果有人感兴趣的话,这是代码的其余部分
import java.util.Scanner;
public class DiceCollection {
private int numDice,diceNumSides[];
Die[] dice;
public DiceCollection(int numDice, int[] diceNumSides) {
this.numDice = numDice;
this.diceNumSides = diceNumSides;
Die[] dice = new Die[];
for (int i = 0; i < numDice; i++){
dice[i] = new Die(diceNumSides[i]);
}
}
public int sumDice(){
int sumSides = 0;
for (int i = 0; i < numDice; i++){
sumSides = sumSides + dice[i];
}
return sumSides;
}
}
答案 0 :(得分:0)
- 缺少数组维度
醇>
数组总是固定长度。您需要在构造时指定它们的大小(并且以后不能再更改它)。你写了
Die[] dice = new Die[];
但你需要写一些像
这样的东西Die[] dice = new Die[5];
表示有5
骰子的数组。在你的情况下可能
Die[] dice = new Die[numDice];
如果需要可变长度,可以使用List
类的实现,例如ArrayList
(内部使用数组技术)。
List<Die> dice = new ArrayList<>();
- 不兼容的类型:
醇>Die
无法转换为Die[]
此错误是第一个错误的后续行动。指定长度时将修复它。
- Local Variable隐藏字段
醇>
此警告抱怨您的变量名称等于某些成员变量(字段)的名称,例如
this.diceNumSides = diceNumSides;
这里有一个名为diceNumSides
的局部变量和一个名为diceNumSides
的字段(同样适用于numDice
和dice
)。这意味着您必须使用this
来处理该字段,就像您在代码中正确执行的那样。
但是,这通常是令人讨厌的错误的根源。这就是为什么你得到警告,你可能会选择不同的名称。经常使用的是字段的前导m
(我的):
mDiceNumSides
在其他语言中,常用的是下划线(_diceNumSides
)。