2009-12-24 152 views
16

我不知道下面的代碼有什麼問題....我從文本框獲取輸入並將輸入放入字符串中。如果文本框是空的,它將返回一個空字符串。在下面的代碼檢查Java中的空字符串

String[] str = new String[9]; 
    for(int i=0;i<9;i++){ 
     if(str[i].equals("")){ 
      System.out.println("set " + cmds[i] + " " + str[i]); 
      WriteThread.sendCommand("set " + cmds[i] + " " + str[i] + "\n", false); 
     } 
    } 

在上述代碼str[i]存儲的文本框中輸入文本,我試圖檢查是否該陣列的任何元件是空的。我也試過str[i] == ""str[i] == null,但沒有運氣。如果我打印字符串str[i] if語句裏面的語句,它不會顯示它意味着它是空的。

我做錯了什麼嗎?

+1

你在試圖檢查什麼?您檢查字符串是否爲空,然後進行打印,並且您所說的結果與「set」+ ...類似,因爲您看不到空字符串:)。也許你想測試的不是條件:即如果(!str [i] .equals(「」)).. – sateesh 2009-12-24 06:19:05

+0

真的,簡單檢查是否()條件... – ThinkJet 2009-12-24 06:50:45

+0

你認爲你可以編輯你的問題,使它更容易理解?從評論和答案,我可以看到我不是唯一一個不知道你真的想要什麼... :-( – KLE 2009-12-24 07:07:12

回答

27

你可以嘗試:

if (str[i] == null || str[i].trim().equals("")){ 
// your code 
} 
+2

它爲我工作....非常感謝.. – 2009-12-24 07:35:00

+1

這不是Javascript。 – vivek 2014-07-19 04:59:38

0

如果字符串是空的,是期望的行爲上面的代碼只執行?在循環之前還聲明str爲新的權利,這幾乎可以保證它是空的。

如果您試圖從文本框中分配值,則需要在循環之前的某個位置分配這些賦值。

15

可以使用Apache Commons Lang檢查的字符串:如果字符串

if (StringUtils.isBlank(str[i]) { 
    ... 
} 

StringUtils.isBlank正在檢查null或空(即,當所有空白字符被刪除,如果它等於"")。

+0

如果有人剛剛進入空間會發生什麼? – Jony 2012-06-21 06:06:03

+1

@AshishDonvir'StringUtils.isBlank(「」)'返回'true'。如果你想讓這個測試返回'false',你可以使用'StringUtils.isEmpty(...)'代替。 – romaintaz 2012-06-21 06:54:20

0

其實我試圖運行你的代碼段,並得到一個NullPointerException你的條件

STR [1] .equals( 「」)

STR [1] == NULL工作了我。你確定你把正確的代碼放在你的問題中。測試剛剛初始化的空數組的空字符串似乎很奇怪。

0

一個非常簡單的解決方案可以是這樣的。

if(str[] != null && !str[].equals(""))