簡體   English   中英

對於if語句中的每個循環?

[英]for each loop inside a if statement?

嘗試在Java中的if語句中編譯此for循環時,出現了“表達式的非法起始”錯誤。 有誰知道為什么嗎?

if(letter.equals(" ") || letter == null ||for(String a: array){ letter.equals(a);})

嘗試

if( letter == null || letter.equals(" ") ||  checkArray(array, letter))
{
    ...
}


boolean checkArray(String[] arryay, String letter)
{
     for(String a: array) 
           if(letter.equals(a)) 
                return true;

     return false;
}

注意:在調用equals()之后,檢查字母是否為null並沒有太大意義; 我已經重新排序了。

你不能。 也許您應該將if語句移至for語句?

正如rfausak所說, for語句不返回布爾值。 順便說一句,您應該已經做出了答案。

好吧,那是因為在if條件下不能有for循環。 似乎您想查看letter是否在array數組內; 如果是這樣,則可以使用Apache commons-langArrayUtils進行操作

ArrayUtils.contains( array, letter );

如果使用Set,則可以編寫:

if ( (letter.equals(" ")) || (letter == null) || (a.contains(letter)) ) {}

這是行不通的,因為for不會評估為布爾值。 出於可讀性考慮,無論如何,您都應該將其提取到方法中,其他答案中還會出現很好的例子。

其他要點,您應該調整條件以使其不受NullPointerException的影響

if (letter == null || " ".equals(letter) || arrayContains(array, letter)) {
        //...
}

如果能夠添加其他庫,則可以使用一些不錯的apache commons庫來簡化此工作,即commons-lang中的StringUtils和commons-collections中的CollectionUtils

您還可能希望通過檢查null之后使用String#trim()來加強輸入檢查,以檢查是否有可能使String大於一個字符。 同樣,對於提取的方法isBlank(String str) ,這將是一個不錯的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM