gpt4 book ai didi

Java - 获取最大整数时的 IndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-02 04:38:02 28 4
gpt4 key购买 nike

我正在尝试创建一个评分系统并获得最佳分数,但我的方法生成了 IndexOutOfBoundsException,但我找不到超出数组列表范围的内容,有人可以帮助我吗?

代码:

 public static Player getBestScore(Arena arena) {
System.out.println(arena.getAPlayers().size());
System.out.println(arena.getAPlayers().get(1).toString());
int i = 0;
Player player = null;
for(int p = 0; p != arena.getAPlayers().size() - 1; i++) {
System.out.println(arena.getAPlayers().get(i).toString());
org.bukkit.entity.Player pla = arena.players.get(i);
if(getArenaPlayer(pla).getScore() > i) {
i = getArenaPlayer(pla).getScore();
player = getArenaPlayer(pla);
}
}
return player;
}

该方法是静态的,因为其他方法和变量也是静态的

最佳答案

您错误地使用了ip!
在循环中,您将 i 设置为某个高分,该分数可能大于数组的大小,因此会出现 IndexOutOfBoundsException。

public static Player getBestScore(Arena arena) {
System.out.println(arena.getAPlayers().size());
System.out.println(arena.getAPlayers().get(1).toString());
int i = 0;
Player player = null;

// index of for loop is p
for(int p = 0; p != arena.getAPlayers().size() - 1; i++) {

System.out.println(arena.getAPlayers().get(p).toString());
org.bukkit.entity.Player pla = arena.players.get(p);

// If player's score is higher than current highscore(i)
if(getArenaPlayer(pla).getScore() > i) {

// Set current highscore(i) to this player's score
i = getArenaPlayer(pla).getScore();
player = getArenaPlayer(pla);
}
}
return player;
}

这就是为什么您应该以更好的方式命名变量!
使用 highscore 而不是 i,并且可能使用 index 而不是 p 会让事情变得不那么困惑!

关于Java - 获取最大整数时的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529682/

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