Ошибка, которую вы получаете, заключается в том, что вы инициализируете массив размером 10. Операция сортировки пройдет все 10 позиций, а некоторые из них будут нулевыми. Если вы создаете 10 игроков, это должно работать без проблем.
Чтобы иметь размер Dynami c, используйте вместо него ArrayList
, обновляя следующее:
static List<NimPlayer> playerList = new ArrayList<>();
public static void createPlayer(String userName, String familyName, String givenName) {
if (counter < 10) {
playerList.add(new NimPlayer(userName, familyName, givenName));
counter++;
} else {
System.out.println("Cannot add more players.");
}
}
Для сортировка списка:
Collections.sort(NimPlayer.playerList);
Кроме того, я думаю, что у вас есть код fl aws.
Сначала вы инициализируете winRatio в объявлении поля и, по крайней мере, из того, что я вижу в вашем коде, не обновляется никогда, поэтому всегда будет 0. Способ преодолеть это - использовать методы получения и установки для запуска вычисления каждый раз, когда вы запрашиваете значение.
public Float getWinRatio() {
return Float.valueOf(getScore()) / (getGamePlayed() + 1);
}
Во-вторых, вы устанавливаете winRatio как int
. Это будет игнорировать все десятичные дроби в делениях, поэтому результаты не будут точными.
Кроме того, вы, похоже, объединяете данные игроков с логами c игры. Вы должны отделить класс NimPlayer
от логики c, содержащей всех игроков в игре.