Java 是否为每个ArrayList元素创建单个整数?
我正在为某个游戏开发某种“分数跟踪”应用程序。用户添加一定数量的玩家(当前数量不限),然后将这些玩家名称添加到ArrayList中。然后在下一个活动中,用户必须从微调器中选择一个玩家名称,并为该玩家输入一定数量的“点数”或“分数” 这是我的当前代码:Java 是否为每个ArrayList元素创建单个整数?,java,android,eclipse,arraylist,Java,Android,Eclipse,Arraylist,我正在为某个游戏开发某种“分数跟踪”应用程序。用户添加一定数量的玩家(当前数量不限),然后将这些玩家名称添加到ArrayList中。然后在下一个活动中,用户必须从微调器中选择一个玩家名称,并为该玩家输入一定数量的“点数”或“分数” 这是我的当前代码: public void submitScore(View v){ LinearLayout lLayout = (LinearLayout) findViewById (R.id.linearLayout); final int p
public void submitScore(View v){
LinearLayout lLayout = (LinearLayout) findViewById (R.id.linearLayout);
final int position = playerList.getSelectedItemPosition();
EditText input = (EditText) findViewById(R.id.editText1);
final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final TextView newTextView = new TextView(this);
String enteredText = input.getText().toString();
if (enteredText.matches(""))
{
emptyTextError();
}
else
{
//NEW TEXTVIEW
newTextView.setLayoutParams(lparams);
newTextView.setText(players.get(position) + " " + score);
newTextView.setTextSize(20);
lLayout.addView(newTextView);
}
}
如您所见,用户输入某个分数,并创建一个新的文本视图,其中包含球员姓名和当前分数
现在我想做的是实现一个功能,跟踪每个球员的得分
示例:用户添加了两个玩家,一个叫约翰,一个叫杰克。然后,用户给John加了20分,过了一会儿,又给John加了20分。现在,文本视图应该如下所示:
约翰20
约翰40
然后,如果用户给Jack加10分,给John加20分,TextView应该如下所示:
约翰20
约翰40
杰克10
约翰60
这就是我不知道该怎么做的。如何为每个ArrayList元素实现一个新的int变量?或者有没有比生成int变量更好的方法
我需要应用程序根据ArrayList自动生成整数,如果ArrayList包含5个玩家,则需要创建5个整数,因为我不知道用户将输入多少玩家。您应该创建一个类,可能称为“玩家”。每个玩家都有一个字符串值
name
和一个int值score
。然后,您可以在每次创建新播放器时将这些Player
实例添加到数组中。请参见如何在PlayerScore类中执行此操作{
字符串用户名;
智力得分;
公共PlayerScore(字符串用户名、整数分数){
this.userName=用户名;
这个分数=分数;
}
//接二连三
}
List playerScore=new ArrayList();
添加(新的playerScore(“John”,20));
添加(新的playerScore(“John”,40));
添加(新的playerScore(“Jack”,10));
添加(新的playerScore(“John”,60));
尝试使用映射
,为了更快地访问,请尝试哈希映射
Map Map=newhashmap();
地图放置(“约翰”,10);
地图放置(“鲍勃”,40);
如果要按名称排序,请使用树形图。如果要按分数排序,请阅读此旧线程:
为什么不使用地图或作文列表呢?@rocketboy我从来没有做过这样的事情,我还是个初学者。你能解释一下怎么做吗?谢谢谢谢你,我会尝试一下,让你知道它是如何运行的。所以,OP应该了解
Map
s和其他收藏,这不是Matthew的意思。他加了2x20,也就是40。你直接加40。因此,玩家对象中的分数需要有一些审计/历史属性。
class PlayerScore{
String userName;
int score;
public PlayerScore(String userName, int score) {
this.userName = userName;
this.score = score;
}
//setter and getter
}
List<PlayerScore> playerScore=new ArrayList<PlayerScore>();
playerScore.add(new PlayerScore("John",20));
playerScore.add(new PlayerScore("John",40));
playerScore.add(new PlayerScore("Jack",10));
playerScore.add(new PlayerScore("John",60));
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("John", 10);
map.put("Bob", 40);