Помогите Где логика? Или может я того?

Статус
Закрыто для дальнейших ответов.

Todorov26

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Todorov26
И снова привет форумчане ) У меня огромный вопрос!

Есть грубо код:
Код:
String lvl = null;
        for(String s : ArcanaRPGCore.getInstance().getLevels().keySet()){
            RPGLevel level = ArcanaRPGCore.getInstance().getLevels().get(s);
            System.out.println(xp + " :: " + level.getNeedXp() + " :: " + (xp >= level.getNeedXp()) + " :: " + s);
            if(xp >= level.getNeedXp()){
               lvl = s;
               System.out.println(lvl);
            }
        }
        System.out.println("User level: " + lvl);
        return lvl;
Он используется в неком методе что не суть важно для моего вопроса.
После вызова в консоли красуется вот такая вот красота:
upload_2021-9-5_18-40-31.png

Мапа что я получаю через getLevels() в гланом классе хранится и инитилизируется в методе загрузки. Заполняется следующим кодом:

Код:
 for(String lvl : levels.getKeys(false)){
            plugin.getLevels().put(lvl, new RPGLevel(levels.getString(lvl + ".display"), levels.getInt(lvl +".xp")));
        }

Где levels, это секция конфига:
upload_2021-9-5_18-43-55.png


Внимание вопрос: Какого блин User lvl == lvl_1?? Поставляется значение переменной xp - 100. должен быть lvl_2. Объясните плиз в чем моя тупость?
 
Ну смотри. Вот ты пошёл по keySet чекать уровни. Судя по консоли, они у тебя идут в порядке 0 2 1 3 (почему в таком?). Для xp = 100: берём 0 уровень. Проверяем, xp больше чем требуется для нулевого уровня? Да. Ставим нулевой уровень. Дальше xp больше, чем надо на 2 уровень? Да, ставим второй уровень. Теперь внимание: следующий(!) в цикле 1 уровень. xp большее чем надо? Да, ставим первый уровень. Третий уровень пропускает, т.к. нема опыта.
Два пути решения. Первый - упорядоченная коллекция для перебора, где уровни будут от меньшего к большему. Второй - не насиловать себе мозг и сделать уровень типом int
 
Ну смотри. Вот ты пошёл по keySet чекать уровни. Судя по консоли, они у тебя идут в порядке 0 2 1 3 (почему в таком?). Для xp = 100: берём 0 уровень. Проверяем, xp больше чем требуется для нулевого уровня? Да. Ставим нулевой уровень. Дальше xp больше, чем надо на 2 уровень? Да, ставим второй уровень. Теперь внимание: следующий(!) в цикле 1 уровень. xp большее чем надо? Да, ставим первый уровень. Третий уровень пропускает, т.к. нема опыта.
Два пути решения. Первый - упорядоченная коллекция для перебора, где уровни будут от меньшего к большему. Второй - не насиловать себе мозг и сделать уровень типом int

Я сам хз почему они в таком порядке :D Ну мб ты и прав сделать инт и не ****ся. Только вот вопрос можно ли инт хранит как ключ в конфиге м? Помоему нет
 
Я сам хз почему они в таком порядке :D Ну мб ты и прав сделать инт и не ****ся. Только вот вопрос можно ли инт хранит как ключ в конфиге м? Помоему нет
По-моему getKeys() в конфиге возвращает лист стрингов, но всегда есть Integer.parseInt(str)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх