【发布时间】:2016-05-10 14:05:06
【问题描述】:
我需要将&&(逻辑与)运算符应用于列表中的所有元素。问题是:在我目前的解决方案中,我需要初始化rowResult变量,我认为结果可能会因为变量具有初始值而变得无效。
ArrayList<Boolean> results = new ArrayList<>();
for (i = 1; i < results.size(); i++) {
rowResult = rowResult && results.get(i);
}
【问题讨论】:
-
好吧,看起来您应该在循环之前将其初始化为
true- 在这种情况下,只要列表中没有任何false值,它将保持为真。那是你要的吗?顺便说一句,您是否有任何理由忽略列表的第一个元素? (我还建议使用增强的 for 循环...)哦,您可以通过在达到false值时立即停止来优化它。 -
"那么 rowResult 可能会变得不正确" true(
x AND true永远不会更改x),因此将其初始化为true应该可以解决问题。 -
谢谢你们@JonSkeet 和@CherryDT,这就是我的想法:如果'rowResult' 是真的,那么如果'results' 有3x 'FALSE' 'rowResult' 将是'TRUE '。这是不正确的。我需要
FALSE || FALSE || FALSE == FALSE -
@P.Savrov: 不,如果
rowResult为真,而你使用rowResult = rowResult && false,那么它将变为false。 -
我的错误,对不起。我想为 AND 和 OR 操作找到一个决策。对于 AND 情况,你是绝对正确的