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,然后停止。
有人可以解释我在这里缺少什么以及如何解决我的问题吗?谢谢。
答案 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;
}
}