2015-02-09 98 views
1

我想如果语句,以简单,我要看看我的两个String的值不为空(不等于“”)。 我用& &运营商,但遗憾的是,只检查一个字符串正确,如果它不是空的,如果第二个字符串是空的,他通过。对我来说,制作& &有点没用。的Java &&运营商

if (StringUtils.isNullOrEmpty(name) && StringUtils.isNullOrEmpty(sname) 
      ) {do something} 

我需要它们两个都被正确检查。如果至少有一个字符串为空,则返回false。 如果两者都不为空,则返回true。

+0

精神上你的代码翻译成英文 - “如果名称为空或空的,姓为空或空的,然后做一些事情。”然后你就会明白它为什么会这样做。 – immibis 2015-02-09 07:53:50

回答

7

目前,如果两个字符串都为空或空的条件为真。

如果你想同时为空或空的您需要:

if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname) 
     ) {do something} 
1

&&是聪明的,如果第一个条件是假的它不会尝试第二。 使用&可以实现你想要的。

0

的问题是,你的支票是错误的。如果两者均为空,您只希望它通过。

那么你应该去

if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname) 
     ) {do something} 

或者如果u想赶上它的if语句,如果其中有一个是空的,你应该使用或:

if (StringUtils.isNullOrEmpty(name)|| StringUtils.isNullOrEmpty(sname) 
     ) {do something} 
0

isNullOrEmpty将返回true如果名字是空的,但你不希望它是空的,那么使用!的条件是否定的。

if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname) 
     ) {do something} 

另一种方法是:

如果{做一些事情}

然而,上述((StringUtils.isNullOrEmpty(名称)|| StringUtils.isNullOrEmpty(SNAME) )!)不是推荐的编码风格,因为它很难抓住!隐藏在行之前,代码读者可能会感到困惑。

关于||和& &运营商优化检查:

||从左到右检查第一个真实情况,如果发现一个真实情况,则跳过任何进一步的检查。

& &从左到右检查第一个错误条件,如果发现一个错误条件,则跳过任何进一步的检查。

0

起初并没有看任何意义对我来说,并没有奏效。直到那时我才意识到我需要翻转返回语句。

if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)) { 
     System.out.println("ok"); 
     return true;} 
else { 
     System.out.println("empty names"); 
     return false; 
    } 

现在它似乎工作得很好。

0

使用'&'作为logical operator您可以执行以下操作。在这里,我们不使用StringUtils -

if( (null!=name && !name.isEmpty()) & 
(null!=sname && !sname.isEmpty()) ){do something}