比较多个布尔值

时间:2016-12-08 10:18:56

标签: android boolean-logic

我有三个从方法返回的布尔值,我想检查这样的条件:首先它将检查所有三个布尔值

场景1:如果是locationMatch,matchCapacity,filterMatchStatus则语句返回true值。

场景2:如果是locationMatch,matchCapacity,filterMatchStatus,如果任何布尔值为false,则返回false值

我试过这样但是,如果任何布尔值为真,它返回true

public boolean matchFilter(FilterTruck filter){

            boolean locationMatch = filterMatchesLocation(filter);
            boolean matchCapacity = filterMatchesCapacity(filter);
            boolean filterMatchStatus = filterMatchesStatus(filter);
            if (locationMatch) {
                return true;
            }
            if (matchCapacity) {
                return true;
            }
            if (filterMatchStatus) {
                return true;
            }
        }
        return false;
    }

6 个答案:

答案 0 :(得分:1)

更新了您的代码,试试这个。

public boolean matchFilter(FilterTruck filter) {

    boolean locationMatch = filterMatchesLocation(filter);
    boolean matchCapacity = filterMatchesCapacity(filter);
    boolean filterMatchStatus = filterMatchesStatus(filter);

    return locationMatch && matchCapacity && filterMatchStatus;
}

答案 1 :(得分:1)

用以下代码替换您的代码。使用'&'在您的情况下运营商,因为'&'如果表达式满足给定条件,则返回true,否则结果将为false

public boolean matchFilter(FilterTruck filter){
            boolean locationMatch = filterMatchesLocation(filter);
            boolean matchCapacity = filterMatchesCapacity(filter);
            boolean filterMatchStatus = filterMatchesStatus(filter);
        return locationMatch && matchCapacity  && filterMatchStatus;
    }

答案 2 :(得分:1)

删除所有if条件并从方法中返回以下内容

 return (locationMatch && matchCapacity && filterMatchStatus);

答案 3 :(得分:1)

与其他答案类似,但是更短的形式(并且它有一个退出点!):

public boolean matchFilter(FilterTruck filter)
{
    boolean locationMatch = filterMatchesLocation(filter);
    boolean matchCapacity = filterMatchesCapacity(filter);
    boolean filterMatchStatus = filterMatchesStatus(filter);
    return (locationMatch && matchCapacity && filterMatchStatus)
}

答案 4 :(得分:0)

public boolean matchFilter(FilterTruck filter){

        boolean locationMatch = filterMatchesLocation(filter);
        boolean matchCapacity = filterMatchesCapacity(filter);
        boolean filterMatchStatus = filterMatchesStatus(filter);

        return locationMatch && matchCapacity && filterMatchStatus;
    }

代码最小化。谢谢@Deepak。基本上你在这里说只有当所有3个变量都为真时才返回true。如果一个为假,则语句返回false(布尔代数)

答案 5 :(得分:0)

试试这段代码:

public boolean matchFilter(FilterTruck filter){
    return filterMatchesLocation(filter) && filterMatchesCapacity(filter) && filterMatchesStatus(filter);
}