2013-01-09 62 views
3

数组我有一个对象,我试图把一个数组列表:试图创建对象

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; 
} 

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

任何帮助,将大规模赞赏, 谢谢,奥利

回答

8

您尚未真正设置阵列中的对象。你首先需要构建一个对象,然后你可以访问它。

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; 
} 
+0

这工作完全谢谢! –

1
for(int i = 0; i < players + 1; i++) 

就会造成ArrayIndexOutOfBoundException,因为数组的索引从0size -1

+0

我很抱歉,但我不确定您的意思,我需要更改哪部分for循环? –

+0

取出+1,它应该是for(int i = 0; i ceptno

+0

实际上我指出他的错误 – Blackbelt

0

你也可以使用一个列表。

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

还注意到.size()的用法假设玩家是不同的阵列。如果它是int则忘记.size()部分