我在Java中使用具有多个条件的If / Else语句。最初,我有8个嵌套if语句,但如果有多个&&连接器。必须通过所有条件才能显示列出的结果。如果任何一个条件失败,则else语句必须通过。我认为我已正确构建了我的块,但在测试期间,所需的结果无法正常工作。例如,我已经更改了ageCustInt,因此它应该失败并显示“Not Compatible”。这完美地工作,然后我将ageCustInt改回了应该通过的年龄,但我仍然得到“不兼容”。我检查了其他每个条件,它们都通过了。我的代码结构不正确吗?我根本找不到为什么我得不到正确的结果。
if (ageCustInt >= ageMinComp1Int && ageCustInt <= ageMaxComp1Int &&
adtV1MileageCustInt >= adtVMileageMinComp1Int && adtV2MileageCustInt >= adtVMileageMinComp1Int && adtV3MileageCustInt >= adtVMileageMinComp1Int &&
adtV1MileageCustInt <= adtVMileageMaxComp1Int && adtV2MileageCustInt <= adtVMileageMaxComp1Int && adtV3MileageCustInt <= adtVMileageMaxComp1Int &&
totalViolationsCustInt >= totalViolationsMinComp1Int && totalViolationsCustInt <= totalViolationsMaxComp1Int &&
totalAdtDriversCustInt >= adtDriversMinComp1Int && totalAdtDriversCustInt <= adtDriversMaxComp1Int &&
bodilyInjuryCust.equals(bodilyInjuryComp1) &&
propDamageCust.equals(propDamageComp1) &&
unUiBodilyCust.equals(unUiBodilyComp1))
{
btnComp1.setVisible(true);
lblPriceComp1.setText("$ " + price1String);
lblPriceComp1.setVisible(true);
}
else
{
lblPriceComp1.setText("Not Competitive");
}
答案 0 :(得分:2)
展平它的一种方法是引入一种带有短路返回语句的方法
boolean check(args)
{
if(expr1)
return false;
if(expr2)
return false;
...
return true;
}
我们也可以使用本地块
boolean b=false;
check:
{
if(expr1)
break check;
if(expr2)
break check;
...
b = true;
}
if(b)
...
else
...
使用lambda表达式
Supplier<Boolean> check = ()->
{
if(expr1)
return false;
if(expr2)
return false;
...
return true;
}
if(check.get()) ...