2

ちょっとした Android アプリを作成するだけで、データのコレクションを保持する必要があり、オブジェクト、配列、listarray、ハッシュマップなどを使用する必要があるかどうかわかりません。

文字列と整数 (例: tamename、スコア、カテゴリ、ターン数) を格納できる必要があります。

可変数のチームを保存できる必要があります。

現在、オブジェクトとして保存しようとすると問題が発生しますが、スコアの int 値をインクリメントすることはできません。

このインスタンスにはどのコレクションを使用する必要がありますか? また、他のインスタンスで各コレクションをいつ使用する必要がありますか?

編集

わかりましたが、アクセス/インクリメントしようとするとNullPointerExceptionが発生し続けます。upScore からチーム var に適切にアクセスできないとしか思えません。

だから私のonCreateはこのようなものです

public ArrayList<Team> teams;
public int currentTeam;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    currentTeam = 0;

    List<Team> teams = new ArrayList<Team>();

    teams.add(new Team("Team 1"));
    teams.add(new Team("Team 2"));

}

次に、ボタンが押されると upScore が呼び出されます。致命的な例外はこの行にあります

public void upScore(int team_key) {
    teams.get(0).score++;
}

そして、これが私のチームオブジェクトです

class Team {
    public String name;
    public int score;
    public String category;
    public int turns;

    public Team (String teamName) {
        name = teamName;
    }
}
4

2 に答える 2

6

次のような、必要なデータを保持できるオブジェクトを表す独自のクラスを作成します。

class Team
{
    public String teamName;
    public int score;
    public String category;
    public int numberOfTurns;

    public Team(...){...} // the constructor
}

次に、配列リストなど、必要なデータ構造を使用します。

List<Team> list = new ArrayList<Team>();

リストに要素を追加するには:

list.add(new Team(...));

リストの最初のチームのスコアを増やすには:

list.get(0).score++;

等々...

于 2012-08-27T15:36:27.823 に答える
2

変化する

List<Team> teams = new ArrayList<Team>();

teams = new ArrayList<Team>();

参照:あなたの宣言はメンバー変数を隠しています。

于 2012-08-27T17:26:33.997 に答える