【发布时间】:2015-05-28 06:14:21
【问题描述】:
我有两个条件要检查,如果一个条件为真,我需要执行一些代码,如果另一个条件为真,我需要执行一些不同的代码。但是,如果其中一个为真,除了具体的代码,我还需要执行一段普通的代码。
请注意,两个条件中只有一个可以为真,不能同时为真。
所以,我可以通过 3 种方式做到这一点:
方法一
if (condition1 || condition2){
//common code here
commonCode();
moreCommonCode();
//Dig a bit deeper to see which one was true
if (condition1){
//Carry out some code here specific to condition1
specificToCondition1();
moreCondition1Stuff();
}
else {
//Carry out some code here specific to condition2
specificToCondition2();
moreCondition2Stuff();
}
}
方法二
if (condition1){
specificToCondition1();
moreCondition1Stuff();
}
else if (condition2){
specificToCondition2();
moreCondition2Stuff();
}
if (condition1 || condition2){
commonCode();
moreCommonCode();
}
方法3
if (condition1){
specificToCondition1();
moreCondition1Stuff();
commonCode();
moreCommonCode();
}
else if (condition2){
specificToCondition2();
moreCondition2Stuff();
commonCode();
moreCommonCode();
}
在方法一和方法二中,我需要检查两次条件。
在方法3我必须复制公共代码。
我是否遗漏了什么,有没有办法做到这一点,我不必复制代码或检查两次条件?
【问题讨论】:
-
检查一个条件两次并不是一个昂贵的操作。如果涉及任何昂贵的东西,请将结果分配给
boolean。 -
@n0rd - 哎呀。谢谢,已编辑。如果条件可以为真,则只注意一个,而不是两者。谢谢。
-
Method1 是最优的。正如@RealSkeptic 所提到的,你不能再保存更多的行了,如果检查布尔值也不会那么费力。
标签: java if-statement multiple-conditions