处理多个布尔组合

ius*_*ser 1 java combinations boolean-logic boolean

我有5个布尔变量a,b,c,d和e.因此,对于每个变量的每个不同的true和false组合,都有不同的print语句.

比如说:

abcde ---打印陈述

TTTTT - 打印所有真实情况

TTTTF - 打印一些文字

TTTFF - 打印其他一些文字

........

可能有32种不同的可能组合.我正在写一个java代码.所以问题是每个条件都应该打印出不同的声明.那么什么是最好的解决方案来处理这个而不是常规的if语句会使代码更加混乱和无法管理?

Jon*_*eet 8

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

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

System.out.println(statements[mask]);
Run Code Online (Sandbox Code Playgroud)

...在哪里statements是一个长度为32的数组.所以在你的情况下,statements[31]将是"所有真实",statements[30]并将是"一些文本"等.