Java String类的split方法,对于未提供所需输出的每个循环
下面的方法有时返回真值,有时返回假值。有人能检查一下这里面有什么问题吗。该方法的输入为“19”Java String类的split方法,对于未提供所需输出的每个循环,java,arrays,foreach,Java,Arrays,Foreach,下面的方法有时返回真值,有时返回假值。有人能检查一下这里面有什么问题吗。该方法的输入为“19” 逻辑上不正确的是else块,它应该是对成功的if块执行的否定 else { isEnabled = true; } 换成 else { isEnabled = false; } 这意味着当没有存储时,您应返回false,因为存储无效 您共享的代码块不会引发异常,因此您可以轻松摆脱try-catch 不使用布尔标志,您可以直接从块中返回,如下所示: if (storeNoArray
else
块,它应该是对成功的if
块执行的否定
else {
isEnabled = true;
}
换成
else {
isEnabled = false;
}
这意味着当没有存储时,您应返回false
,因为存储无效try-catch
返回
,如下所示:
if (storeNoArray != null && storeNoArray.length > 0) {
for (String store : storeNoArray) {
if (storeNo.equals(store.trim())) {
return true;
}
}
} else {
return false;
}
return false;
return Arrays.stream(storeNoArray)
.anyMatch(store -> storeNo.equals(store.trim()));
预期的输出是什么?我假设“方法有时返回真值,有时返回假值。”并不意味着它为相同的输入返回不同的值。那么,对于哪些输入,您得到的结果是您不期望的呢?您希望在那里看到什么以及为什么?默认情况下,如果没有可用的存储编号,则此方法应返回true。从日志中,它不会抛出任何异常,但会返回true,有时返回false,偶尔会发生。预期输出为true。该方法的输入是“19”,它在被拆分的字符串中。@Ashok当我使用输入
19
运行此方法时,它将返回true
,正如您所期望的那样。这里的问题是什么?您不需要if/else
只需要返回array.stream(storeNoArray).anyMatch(store->storeNo.equals(store.trim())代码>应该足够了。如果storeNoArray
为空,则anyMatch
将返回false。@a我的回答正确,谢谢……几乎忘记了我使用的数组。stream
的步骤。我们使用的是jdk 7。@Ashok在这种情况下,您可以将自己限制到第3步。。第一步的初衷是将此作为一个答案与大家分享。谢谢你。我会跟进你添加的步骤,如果我仍然看到任何问题,我会继续跟进。
return Arrays.stream(storeNoArray)
.anyMatch(store -> storeNo.equals(store.trim()));