java - 处理多个 boolean 组合

标签 java boolean combinations boolean-logic

我有 5 个 boolean 变量 a、b、c、d 和 e。因此,对于每个变量的 true 和 false 的每种不同组合,都有不同的打印语句。

举个例子:

a b c d e --- 打印报表

T T T T T -- 打印所有真值

T T T T F -- 打印一些文本

T T T F F -- 打印一些其他文本

........

可能有 32 种不同的可能组合。我正在写一个java代码。所以问题是对于每种情况都应该打印出不同的语句。那么处理这个问题的最佳解决方案是什么,而不是使代码更加困惑和难以管理的常规 if 语句?

最佳答案

一个选择是基本上构建一个位掩码:

int mask = (a ? 1 : 0) |
           (b ? 2 : 0) |
           (c ? 4 : 0) |
           (d ? 8 : 0) |
           (e ? 16 : 0);

System.out.println(statements[mask]);

... 其中 statements 是一个长度为 32 的数组。因此在您的情况下,statements[31] 将是“全部为真”,而 statements [30] 将是“一些文本”等。

关于java - 处理多个 boolean 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486725/

相关文章:

java - 递归计算所有数组元素组合问题

java - 如何从elasticsearch获取子聚合

java - 根据java中的索引号将元素移动到数组的前面

types - 什么是 boolean 值?在 Clojure

Java 2D boolean 数组航空公司程序,完全难住了

Java 中的整数、字符串和 double

java - CentOS 7 : segmentation fault (core dumped) when type java -version

java - 如何在mybatis中动态拦截和更改sql查询

python - 在变量列表上尝试所有操作组合

combinations - 求 nCr mod M,其中 M 不是素数