gpt4 book ai didi

java - LinkedList 填充重复条目

转载 作者:行者123 更新时间:2023-12-01 23:48:59 26 4
gpt4 key购买 nike

我从 MySQL 中的一个表开始,其中填充了记分牌的玩家数据。它有 4 个具有不同名称和分数的条目。我的代码成功检索了这些条目。我在使用此方法检索条目时对此进行了测试:

while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int score = resultSet.getInt("score");
int lastScore = resultSet.getInt("lastScore");
System.out.println("" + Integer.toString(id) + ", " + name + ", $" + Integer.toString(score) + ".");
Scoreboard.addScore(id, name, score);
<小时/>

println() 返回以下四行:

1, Sam, $10000.
2, Jesus, $12000.
3, Michael, $9000.
4, Asako, $4500.
<小时/>

addScore() 看起来像这样:

    public static void addScore(int id, String name, int score){//Adds new score to scores LinkedList
if (scores.isEmpty())
scores.addFirst(new Player(id, name, score, 0));
for (int i = 0; i < scores.size(); i++){
if (score > scores.get(i).getScore()){
scores.add(i, new Player(id, name, score, 0));
return;
}
}
scores.addLast(new Player(id, name, score, 0));
}
<小时/>

最后,Player 类看起来像这样:

public class Player {
private static int id;
private static String name;
private static int score;
private static int lastPosition;

public Player(int id, String name, int score, int lastPosition){
setID(id);
setName(name);
setScore(score);
setLastPosition(lastPosition);
}
//...
<小时/>

当我最终开始显示分数时,它会显示以下内容:

  1. 麻子 4500 美元
  2. 麻子 4500 美元
  3. 麻子 4500 美元
  4. 麻子 4500 美元

我的代码有什么问题可能会导致这个问题吗?另外,您认为是否有任何代码可以更好地帮助您评估这个问题?我尝试将所有重要的代码放入其中。

<小时/>

在检索记分板时,我使用此代码scores.get(i).setLastPosition(i+1);

这是正确的语法吗?我可以通过调用get来设置LinkedList中部分元素的值吗?还是不可能?

最佳答案

您的Player类定义了4个static变量,这意味着它们为整个类定义一次,无论Player有多少个实例你创造。每个新实例都会覆盖这些值,最后一个 Asako $4500 “获胜”。

Player 的 4 个变量中删除 static,以便它们对于 Player 类的每个实例都有一个值。

关于java - LinkedList<type> 填充重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com