проблема со сравнением Doubles в операторе if - PullRequest
0 голосов
/ 19 сентября 2018

Вот метод, отвечающий за прокачку персонажа.Например, если мы дадим ему 100 очков опыта для следующего уровня, он увеличит его уровень.Но для следующих уровней, если xp, необходимый для следующего уровня, равен текущему количеству опыта, который имеет NPC, оператор игнорируется.Но когда я печатаю это, это дает правду.Как получилось?

public void setExp(int exp) throws Exception {
        if (exp >= 0) {
            this.exp += exp;
            if (this.exp > expForNextLvl) {
                while (this.exp > expForNextLvl) {
                    setLvl(1);
                    setExpForNextLvl(Math.round(expForNextLvl * 1.2 + 5));
                }
            } else if (Double.valueOf(this.exp).equals(Double.valueOf(expForNextLvl))) {
                setLvl(1);
                setExpForNextLvl(Math.round(expForNextLvl * 1.2 + 5));
            }
        } else {
            throw new Exception("exp less than 0");
        }
    }

1 Ответ

0 голосов
/ 19 сентября 2018

.equals () метод используется для сравнения строк, а не двойников. Я бы посоветовал использовать this.exp == expForNextLvl

...