2

只是制作一个小安卓应用程序,我需要保存一组数据,不确定是否应该使用对象、数组、listarray、hashmap 等。

它需要能够存储字符串和整数(例如名称、分数、类别、转数)。

它需要能够存储可变数量的团队。

目前有我尝试将其存储为对象的问题,但它不会让我增加 score int 值。

在这个实例中我应该使用哪个集合,在其他实例中我应该何时使用每个集合?

编辑

好的,这样做了,但是当我尝试访问/增加它时,我不断收到 NullPointerException。我只能假设它无法从 upScore 正确访问 team 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
}

然后使用您想要的任何数据结构,例如,arraylist:

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 回答