【发布时间】:2023-04-01 17:33:02
【问题描述】:
我是 Java 新手,不知道自己做错了什么。我只是想保存高分然后打印出来。
int max = players[0].getHighScore();
int bestIndex = 0;
String bestName = "testing";
for (int i = 1; i < players.length; i=i+1) {
if (players[i].getHighScore() > max) {
bestIndex = i;
max = players[i].getHighScore();
bestName = players[i].getName();
}
}
System.out.println(bestIndex);
System.out.println(max);
System.out.println(bestName);
变量 max 将为每个循环更新,然后打印高分,没有问题。但是另外两个变量 bestIndex 和 bestName 将保持与启动时相同的值。我什至尝试在 if 语句中分别将 bestIndex 和 bestName 设置为常量和字符串,但它们不会改变。如果我删除 if 语句,两者都会改变,但当然我只会得到最后的条目,而不是对应于高分的条目。所以我认为问题出在 if 语句上,但除此之外,我没有任何线索。
【问题讨论】:
-
bestName应初始化为players[0].getName(), FWIW。 -
您的
players包含什么内容?你说结果没有更新,但是代码看起来很好,除了 Qix 提到的初始化。 -
你发誓代码看起来像这样吗,米歇尔?因为这应该工作......
-
players 是一个对象数组,如果我的措辞正确的话。但是 max = player[i].getHighScore();工作得很好,if 语句中的其他两行是不工作的。
-
players[0] 得分最高,不是吗?
标签: java loops if-statement