尝试在java中的for
语句中编译此if
循环时,我遇到了“非法启动表达式”错误。有谁知道为什么?
if(letter.equals(" ") || letter == null ||for(String a: array){ letter.equals(a);})
答案 0 :(得分:4)
尝试
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并没有多大意义;我重新订购了那些。
答案 1 :(得分:0)
你做不到。也许您应该将if
语句移到for
语句中?
如rfausak
所述,for
语句不返回布尔值。你应该顺便做出答案。
答案 2 :(得分:0)
嗯,这是因为你不能在for
条件下进行if
循环。您似乎想看看letter
是否在array
数组中;如果是,那么您可以使用Apache commons-lang的ArrayUtils:
ArrayUtils.contains( array, letter );
答案 3 :(得分:0)
如果你使用Set,你可以写:
if ( (letter.equals(" ")) || (letter == null) || (a.contains(letter)) ) {}
答案 4 :(得分:0)
这不起作用,因为for
不会计算为布尔值。为了便于阅读,您应该将其提取到方法中,其他答案中会出现好的示例。
其他一点,你应该重新调整你的条件,使其不受NullPointerException
的影响
if (letter == null || " ".equals(letter) || arrayContains(array, letter)) {
//...
}
如果你能够添加额外的库,那么有一些很好的apache公共库可以使这项工作更容易,即commons-lang中的StringUtils和commons-collections中的CollectionUtils。
您还可以在检查String
后使用String#trim()
强化该输入检查是否可以使null
大于一个字符。同样,这将是提取方法isBlank(String str)
的良好候选者。