Java If / Else Multiple Conditions

时间:2015-10-27 01:43:36

标签: java if-statement conditional-statements

我在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");
        }

1 个答案:

答案 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()) ...