Java If/Else多个条件
我在Java中使用带有多个条件的If/Else语句。最初,我有8个嵌套的if语句,但将它们组合成一个if和多个&&连接器。必须通过所有条件才能显示列出的结果。如果任何一个条件失败,else语句必须通过。我认为我已经正确地构造了我的块,但是在测试期间,所需的结果不能正常工作。例如,我更改了ageCustInt,使其失败并显示“不兼容”。这非常有效,然后我将ageCustInt改回了应该过去的年龄,但我仍然感到“不兼容”。我已经检查了其他每个条件,它们都通过了。我的代码是否结构不正确?我简直找不到为什么我得不到正确的结果Java If/Else多个条件,java,if-statement,conditional-statements,Java,If Statement,Conditional Statements,我在Java中使用带有多个条件的If/Else语句。最初,我有8个嵌套的if语句,但将它们组合成一个if和多个&&连接器。必须通过所有条件才能显示列出的结果。如果任何一个条件失败,else语句必须通过。我认为我已经正确地构造了我的块,但是在测试期间,所需的结果不能正常工作。例如,我更改了ageCustInt,使其失败并显示“不兼容”。这非常有效,然后我将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");
}
如果(ageCustInt>=AGEMINCOMPINT&&ageCustInt=ADTVMILEAGEMINCOMPINT&&adtV2MileageCustInt>=ADTVMILEAGEMINCOMPINT&&adtV3MileageCustInt>=ADTVMILEAGEMINCOMPINT&&
adtv1mileagecustin使其平坦化的一种方法是引入一种带有短路返回语句的方法
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()) ...
供应商检查=()->
{
if(expr1)
返回false;
如果(expr2)
返回false;
...
返回true;
}
如果(check.get())。。。
这是几乎不可能调试的,建议你应该考虑一个激进的重新设计。你能告诉我们你认为你需要什么吗?看起来你也在把模型和视图代码混合在一起,一个你应该强烈考虑的重排就是把它们分开——创建一个反映底层状态的模型。系统,即尽可能不依赖视图的系统,它在Swing GUI中的工作应该与在控制台程序或Android程序中的工作一样好。这看起来真的像是您要维护的代码吗?提供的信息不足以进行调试。此外,您为什么要使用这样的代码?将其重新定义为更简单、更容易的代码不是很容易吗?我没有详细的说明我不知道如何使这段代码更简单。我需要一些用户输入的数据来通过所有这些条件,或者在任何条件不满足时失败。我可以提供什么更多的信息来帮助调试更容易?我希望您理解“兼容”和“竞争”单词的含义完全不同吗?无论如何,我看不出你的代码有任何错误,因此如果它给出了错误的结果,要么是其中一段数据不是你所认为的,要么是equals
方法的问题。因为我们看不到其中任何一个,我认为除了h之外,我们没有什么可以帮助的帮助你简化代码。但是我们不能帮你发现问题。