我有一个我试图放入数组列表的对象:
class PlayerScores {
String playerName;
int played=0;
int win=0;
int draw=0;
int loss=0;
int points=0;
void playerNameSet(String name){
playerName=name;
}
void played(){
played=played+1;
}
void win(){
win=win+1;
points();
}
void draw(){
draw=draw+1;
points();
}
void loss(){
loss=loss+1;
}
void points(){
points = (win*3)+draw;
}
}
基本上,当用户选择了多少玩家时,我想初始化这些对象的数组,但是我收到了错误。这是用于初始化数组然后为玩家分配名称的代码。
数组已经在我的代码开头定义并且是公共的,所以我可以在不同的活动中使用它: “PlayerScores [] playersObjects;”
public PlayerScores[] makePlayerObjects() {
playersObjects = new PlayerScores[players];
for(int i = 0; i < players + 1; i++)
{
playersObjects[i].playerNameSet(name variable);
}
return playersObjects;
}
错误似乎发生在设置名称的行上,但与名称变量无关。
任何帮助都会受到大力赞赏, 谢谢,Oli
答案 0 :(得分:8)
您实际上没有在数组中设置对象。首先需要构建一个PlayerScores
对象,然后才能访问它。
public PlayerScores[] makePlayerObjects() {
playersObjects = new PlayerScores[players];
for(int i = 0; i < playersObjects.length; i++)
{
playersObjects[i] = new PlayerScores(); //make the object so we can access it
playersObjects[i].playerNameSet(name variable);
}
return playersObjects;
}
答案 1 :(得分:1)
for(int i = 0; i < players + 1; i++)
它会导致ArrayIndexOutOfBoundException
,因为数组的索引从0
变为size -1
答案 2 :(得分:1)
您也可以使用列表。
List<PlayerScores > myList = new ArrayList<PlayerScores>();
for(int i = 0; i < players.size(); i++){
myList.add(new PlayerScores().playerNameSet(thename));
}
还注意.size()
用法,假设玩家是不同的阵列。如果是int
,那么请忘记.size()
部分