[英]having an if statement inside a loop without calling it in each iteration
[英]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-lang的ArrayUtils進行操作 :
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.