Java 中 2 个条件的 4 种可能性的最佳写法是什么
what is the best way to write the 4 possibilities of 2 conditions in Java
CONDITION1 和 CONDITION2 是字符串变量,可以是 NULL 或 NON NULL。
举例来说,我有 2 个变量,如 CONDITION1 和 CONDITION2。
如果 CONDITION1 不为 NULL,则调用 METHOD1(),如果它 returns TRUE,则检查 CONDITION2 是否为 NULL,然后调用 METHOD2()。
如果 CONDITION1 为 NULL,则我检查 CONDITION2 是否为 NULL。如果它不是 NULL,那么我调用 METHOD2()。
如果 CONDITION1 不是 NULL,那么我调用 METHOD1() 然后检查 CONDITION2 是否为 NULL。如果它是 NULL 那么我不调用 METHOD2()。
两种方法return 一个布尔值。正确或错误。
- 如果其中 None 个为 NULL
- 如果条件 1 不为空且条件 2 为空
- 如果条件 2 为空且条件 1 不为空
- 如果两个条件都为NULL
下面是使用 if else if 语句的代码。
有更好的方法吗?
//Fail
和// process further
代表相同的代码。
if(CONDITION1 != null && CONDITION2 != null){
if(METHOD1()){
if(METHOD2()){
// process further
}else{
//Fail
}
}else{
//Fail
}
}else if(CONDITION1 != null && CONDITION2 == null){
if(METHOD1()){
// process further
}else{
//Fail
}
}else if(CONDITION1 == null && CONDITION2 != null){
if(METHOD2()){
// process further
}else{
//Fail
}
}else{//Both are NULL
// process further
}
只要你所有的 // process further
代表相同的代码,并且你所有的 //Fail
代表相同的代码,正如你所说,那么你所做的就相当于:
if ((CONDITION1==null || METHOD1())
&& (CONDITION2==null || METHOD2())) {
// process further
} else {
// fail
}
CONDITION1 和 CONDITION2 是字符串变量,可以是 NULL 或 NON NULL。 举例来说,我有 2 个变量,如 CONDITION1 和 CONDITION2。 如果 CONDITION1 不为 NULL,则调用 METHOD1(),如果它 returns TRUE,则检查 CONDITION2 是否为 NULL,然后调用 METHOD2()。 如果 CONDITION1 为 NULL,则我检查 CONDITION2 是否为 NULL。如果它不是 NULL,那么我调用 METHOD2()。 如果 CONDITION1 不是 NULL,那么我调用 METHOD1() 然后检查 CONDITION2 是否为 NULL。如果它是 NULL 那么我不调用 METHOD2()。
两种方法return 一个布尔值。正确或错误。
- 如果其中 None 个为 NULL
- 如果条件 1 不为空且条件 2 为空
- 如果条件 2 为空且条件 1 不为空
- 如果两个条件都为NULL
下面是使用 if else if 语句的代码。
有更好的方法吗?
//Fail
和// process further
代表相同的代码。
if(CONDITION1 != null && CONDITION2 != null){
if(METHOD1()){
if(METHOD2()){
// process further
}else{
//Fail
}
}else{
//Fail
}
}else if(CONDITION1 != null && CONDITION2 == null){
if(METHOD1()){
// process further
}else{
//Fail
}
}else if(CONDITION1 == null && CONDITION2 != null){
if(METHOD2()){
// process further
}else{
//Fail
}
}else{//Both are NULL
// process further
}
只要你所有的 // process further
代表相同的代码,并且你所有的 //Fail
代表相同的代码,正如你所说,那么你所做的就相当于:
if ((CONDITION1==null || METHOD1())
&& (CONDITION2==null || METHOD2())) {
// process further
} else {
// fail
}