我试图循环遍历对象并每次更新变量,我有一个具有以下所有变量的Player类:
Name, s1 ,s2, s3,...., s11, total
我想从开始到结束遍历每个变量,并为每个玩家添加每个玩家的得分(所有玩家都在数组列表中)。
我不确定这样做的最佳方法是,有没有办法选择一个特定的对象,然后根据它是谁来添加变量。
如果您需要更多信息,请提前询问并感谢您提供的任何帮助。
public void addScore(int turn, int score){
Player.setScore( turn, score);
}
答案 0 :(得分:1)
您可以使用简单的for循环数组列表,如下所示:
ArrayList<Player> players = ...;
for (int i = 0; i < players.size(); i++) {
/*Operations on players[i] = the current player*/
}
要获取和修改播放器的变量,您可以为每个参数创建getter和setter方法,如下所示:
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
如果你有很多相同类型的变量(s1,s11),请使用数组:
int[] scores = new int[11];
所以你可以用另一个来循环。
答案 1 :(得分:0)
如果我正确理解这个问题,每个玩家都有一个名字,11个分数和一个总分。你似乎在问如何迭代一个玩家列表,并使总数等于11个得分的总和。
更常见的(在OO语言中)方法只是为了确保总数总是等于11个分数的总和。 (这称为“封装”,是所有面向对象编程背后的基本思想。)这很容易实现(为了便于编程,我把分数放在一个数组中):
public class Player {
private String name ;
private int[] scores ;
private int total ;
public Player(String name) {
this.name = name ;
this.scores = new int[11] ; // all initialized to zero, as is total.
}
public void setScore(int whichScore, int score) {
int change = score - scores[whichScore] ;
scores[whichScore] = score ;
total = total + change ;
}
public int getScore(int whichScore) {
return scores[whichScore] ;
}
public int getTotal() {
return total ;
}
public String getName() {
return name ;
}
public void setName(String name) {
this.name = name ;
}
}
现在你的问题是多余的:total
总是等于得分的总和,所以没有必要遍历玩家来计算你代码中任何地方的总数。您可以通过
for (Player p : listOfPlayers) {
System.out.println("Player "+p.getName()+" has total score "+p.getTotal());
}