4

我有一个对象要放入数组列表中:

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 [] playerObjects;”

public PlayerScores[] makePlayerObjects() {
        playersObjects = new PlayerScores[players];
        for(int i = 0; i < players + 1; i++)
        {
            playersObjects[i].playerNameSet(name variable);
        }

    return playersObjects;
}

该错误似乎发生在设置名称的行上,但与名称变量无关。

任何帮助将不胜感激,谢谢,奥利

4

3 回答 3

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;
}
于 2013-01-09T16:55:31.157 回答
2

您也可以使用列表。

 List<PlayerScores > myList = new ArrayList<PlayerScores>();
 for(int i = 0; i < players.size(); i++){
        myList.add(new PlayerScores().playerNameSet(thename));
 }

还要注意.size()假设玩家是不同的数组的用法。如果是,int则忘记该.size()部分

于 2013-01-09T16:53:52.473 回答
1
for(int i = 0; i < players + 1; i++)

它会导致ArrayIndexOutOfBoundException,因为数组的索引从0size -1

于 2013-01-09T16:50:09.180 回答