如何避免Java中的多个IF循环

How avoid multiple IF loops in Java

本问题已经有最佳答案,请猛点这里访问。

在Java中,避免EDOCX1和1检查的多个EDOCX1 0个块的最佳方法是什么?

下面是我的示例代码。哪一个是最优化的方法?

1
2
3
4
5
6
7
if (address!=null} {
    if (firstName!=null) {
        if (lastName!=null) {

        }
    }
}


使用&&&&是逻辑与。&&组合两个值并返回一个布尔值,当且仅当其两个操作数都为真时才为真。

1
2
3
if(address!=null && firstName!=null && lastName!=null)
{
}

例如

1
2
3
boolean b;
b = 3 > 2 && 5 < 7; // b is true
b = 2 > 3 && 5 < 7; // b is now false

if loop是个错误的词。您应该这样说EDOCX1[4],因为在这种情况下,您可以使用或()或和(&;)语句

1
2
3
if(address!=null && firstName!=null && lastName!=null)
{
}

如果要通过所有检查或嵌套if语句的集成,请尝试AND(&&),对于非嵌套的,如else if,请尝试OR(||),或者简单地说,如果要通过任何条件,但是如果所有这些都是字符串,那么您应该这样尝试"yourValue".equals(stringValue)这将跳过空检查。


使用和运算符(&;)

1
2
3
4
   if(address!=null && firstName!=null && lastName!=null)
    {
      //DoSomething here
    }

我建议你看短路评估


没有if循环

1
2
3
4
boolean complete = address != null && firstName != null && lastName != null;
if (complete)
{
}

怎么办:

1
2
3
4
5
public boolean notNulls(Object ... args) {
    for(Object arg : args)
        if (arg == null) return false;
    return true;
}

用途:

1
2
3
if (notNulls(address, firstName, lastName)) {
    // do something
}


正如其他人指出的,逻辑与(&;&;)可能是整合逻辑的最佳方法。只有当双方都对true进行评估时,操作才会对true进行评估。

1
2
3
4
5
if (address != null && firstName != null && lastName != null) {
    // Whatever you want to do with that...
} else {
    // Whatever you want to do with bad input
}

出于多样性的考虑,您还可以使用一种尝试捕获方法。在Java中,如果您试图调用一个空值的方法,则可以抛出一个Null PoExtExchange异常,您可以捕获并处理它。

1
2
3
4
5
try {
    // Whatever you want to do with that...
} catch (NullPointerException npe) {
    // Whatever you want to do with bad input
}

如果您有一组可能为空的非常大的输入,那么这种方法会很有帮助,尽管一般来说我不提倡这种方法。(第二种方法的问题是,如果您从触发nullpointerException的try部分调用其他方法,它将在这里的catch块中结束,即使它可能与这些输入完全无关,也可能使您很难在程序的其他部分发现错误。)