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

}

基本的に、ユーザーがプレイヤーの数を選択したときに、これらのオブジェクトの配列を初期化したいのですが、エラーが発生しています。以下は、配列を初期化し、プレイヤーにも名前を割り当てるためのコードです。

配列はコードの冒頭で定義されており、公開されているため、さまざまなアクティビティで使用できます。

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

    return playersObjects;
}

名前が設定されている行でエラーが発生しているようですが、名前変数とは関係ありません。

どんな助けでも大歓迎です、ありがとう、Oli

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配列のインデックスが から0に移動するため、が発生します。size -1

于 2013-01-09T16:50:09.180 に答える