为什么我的if(else if)语句被忽略?

时间:2018-12-16 02:39:56

标签: java if-statement

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 :(得分:1)

您的第三个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);

答案 1 :(得分:0)

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

我认为else if子句将永远不会执行,因为一旦执行if子句,就将永远不会执行else子句。

答案 2 :(得分:0)

只需将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;
    }

}