当多个IF语句条件为真时,我遇到问题。
我的情况,例如:
if (B > A && B >= C && B > D && B> E )
{
while (h < B + 2)
{
r.up();
h++;
}
}
else if (D > A && D > B && D >= C && D > E )
{
while (h < D + 3)
{
r.up();
h++;
}
}
else if (C > A && C > B && C > D && C >= E )
{
while (h < C + 3)
{
r.up();
h++;
}
}
这只是我实际代码的模板,因此看起来更具可读性。
由于还有A和E,因此代码中显然还有更多内容,但是我只考虑了其中的全部内容,以减少其乏味。
基本上,我想做的是根据哪个变量具有最高的值来增加“ h”。问题是,当2个变量具有相同的值(例如B和D均为7)时,代码根本无法工作。
希望您理解我要说的话,并感谢您的宝贵时间!
您应该重新组织代码以使其更具可读性,并消除重复。但是首先,当一个以上变量的值最高时,您需要确定变量的优先顺序。
这是如何修改代码的草图:
// You may want to make a dedicated method for this
int max = Math.max(Math.max(A, B), Math.max(C, D));
int additional;
if (max == A) {
additional = 2;
} else if (max == B) {
additional = 3;
} else if (max == C) {
additional = 1;
} else if (max == D) {
additional = 2;
} else {
throw new IllegalStateException();
}
while (h < max + additional) {
r.up();
h++;
}
想法是使用条件运算来计算最终值,但要在单个循环中进行增量。结果是没有重复循环的更干净的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句