2015-02-09 129 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}