试图创建一个对象数组

时间:2013-01-09 16:49:00

标签: android arrays

我有一个我试图放入数组列表的对象:

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

3 个答案:

答案 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()部分