如何动态决定我想要多少个循环?

she*_*ngy 4 java for-loop

这是主题:

我有一个LinkedList list,如果列表有3个元素,我想列出一个完整的真值表,例如:

a b c   <---   the three elements in list
0 0 0
0 0 1
0 1 0
1 0 0
1 1 1
1 1 0
1 0 1
0 1 1
Run Code Online (Sandbox Code Playgroud)

如果列表有4个或更多元素,我想生成一个更大的表.

但是我被困在这里:

我知道写这样的循环可以生成整个表:

       for (int a = 0; a < 2; a++){
            for (int b = 0; b < 2; b++) {
                for (int c = 0; c < 2; c++) {
                    for (int d = 0; d < 2; d++) {
                        System.out.println(a + " " + b + " " + c + " " + d);
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

但我无法根据列表大小更改循环次数,我认为为此编写特殊情况是不可接受的,那么有没有其他方法可以做到这一点?

Pra*_*nth 12

如果你只想要一个真值表,简单的解决方案:

码:

int len = 3;
int num = (int)Math.pow(2, len);
for(int i=0; i<num; i++){
    // http://stackoverflow.com/a/4421438/1273830
    System.out.println(String.format("%"+len+"s", Integer.toBinaryString(i)).replace(' ', '0'));
}
Run Code Online (Sandbox Code Playgroud)

基本数字逻辑:真值表是二进制数字序列.