0

我需要检查 9 个条件的真假,并且它们需要一次全部为真。怎么可能检查,除此之外

if (condition1 && condition2 && condition3 ... && condition9) {
    ...
}

认为我正确使用了“条件”一词。

4

2 回答 2

3

很难知道您是否不显示更多代码.....

但是,如果我只有那段代码,我可以推荐三件事:

1.如果你有这个信息,从最有可能是假的条件开始,这可能会提高性能.....更多信息在这里短路

2.另一件事,如果你有一个数组中的所有条件,你可以循环遍历数组......这样的事情:

public boolean testCondition(boolean conditionsArray[]){
    for(int i = 0; i < array.length; i++){
        if(!conditionsArray[i])
            return false;
    }

    return true;
}

发布更多代码,我将尝试改进我的答案。

3.您可能还想重新考虑数据结构。如果您需要测试这样的 9 个给定条件(只是可能),您的设计中可能有些东西不是很干净。

希望能帮助到你。

于 2013-09-17T20:07:42.463 回答
0

每当我在代码中遇到这种情况时,我就知道我做错了,需要重新考虑我的对象结构。

但是,仅在问题的纯级别上,只要条件在某种集合中,这将起作用:

    boolean allTrue = true;
    for (boolean condition : conditions) {
        allTrue &= condition;
    }

然后对 allTrue 变量执行 if。请注意,我假设集合不为空,或者如果是,则应将其视为真实条件。

很可能在现实世界中,您必须将这些条件包装在具有公共接口的某种对象中,该接口具有返回布尔值并使用该方法的方法,而不是拥有纯布尔值的集合。

于 2013-09-17T20:13:22.227 回答