Почему мое заявление if (else if) игнорируется? - PullRequest
0 голосов
/ 16 декабря 2018
public void stackPower(int stackAmount)
{
    super.stackPower(stackAmount);

    if (this.amount == -1) {
        this.amount = -2;
        }
    else if (this.amount == -2) {
        this.amount = -3;
    }
    if (this.amount == -3) {
        this.amount = -4;
    }

}

Во время тестирования значение изменяется от -1 до -2, от -4 до -6 и т. Д.

Что я хочу, чтобы происходило: от -1 до -2, от -3 до -4 изатем останавливается.

Может кто-нибудь объяснить, что мне здесь не хватает и как исправить мою проблему?Спасибо.

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018
    if (this.amount == -1) {
        this.amount = -2;
    }
    else if (this.amount == -2) {
        this.amount = -3;
    }

Я думаю, что предложение else if никогда не будет выполнено, потому что после выполнения предложения if предложение else не будет выполнено.

0 голосов
/ 16 декабря 2018

Простое изменение else if в if должно решить проблему.

Проблема, с которой вы столкнулись, заключается в том, что когда у вас есть оператор if и else-if, если мы перейдем к if-оператор мы перепрыгиваем через последующие операторы else-if или операторы else.

     public void stackPower(int stackAmount)
{
          super.stackPower(stackAmount);

    if (this.amount == -1) {
        this.amount = -2;
        }
    if (this.amount == -2) {
        this.amount = -3;
    }
    if (this.amount == -3) {
        this.amount = -4;
    }

}
0 голосов
/ 16 декабря 2018

В третьем условии if отсутствует else (но может быть просто блок else).Например,

if (this.amount == -1) {
    this.amount = -2;
} else if (this.amount == -2) {
    this.amount = -3;
} else {
    this.amount = -4;
}

Но я бы упростил логику с вызовом Math.max(int, int) вроде

this.amount = Math.max(-4, this.amount - 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...