在一个if语句中使用多个OR条件是否正确,有哪些替代方案?

Ilj*_*lja 1 java conditional if-statement

我想知道哪种方式更适合和有效地实现类似:检查文本是否输入到字段中

if(text1.equals("") || text2.equals("") || text3.equals("") || text4.equals("")) {
  //Do Stuff
}
Run Code Online (Sandbox Code Playgroud)

我可以看到超过2个字段如何快速混乱,并想知道这是否是一种正确的方法,或者是否存在替代方案?

fge*_*fge 7

你可以这样做:

if (Arrays.asList(text1, text2, etc).contains(""))
Run Code Online (Sandbox Code Playgroud)

但更好的解决方案取决于具体情况.

但请注意,这比当前代码慢一点.但是,如果你不是每秒执行那么多次测试,那应该没关系.


编辑,因为在评论中已经了解到只有空格的字符串也应满足条件......这里是:

private static final Pattern PATTERN = Pattern.compile("\\s*");

private static boolean emptyOrSpacesOnly(final String... strings)
{
    for (final String s: strings)
        if (PATTERN.matcher(s).matches())
            return true;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后,在代码中:

if (emptyOrSpacesOnly(text1, text2, etc))
Run Code Online (Sandbox Code Playgroud)

  • @EdwinDalorzo 是 `anyMath` 正确还是应该是 `anyMatch`? (2认同)