首页 > 解决方案 > 给出 0 到 15 之间的值,返回 4 个 CheckBoxes 之间的正确选择

问题描述

我正在使用此方法返回 0 到 15 之间的值,具体取决于CheckBox用户选择了我的 4 个 es 中的哪些。

private int countSelectedCheck(CheckBox a, CheckBox b, CheckBox c, CheckBox d){
    CheckBox[] abcd = new CheckBox[]{a, b, c, d};
    // print binary
    int value = 0;
    for (int i = 0; i < abcd.length; i++) {
        if (abcd[i].isSelected()) {
            value += (1 << i);
        }
    }
    return value;
}

我想做反函数,因此在我的 4 个CheckBoxes 之间返回一个选择/未选择的组合,给出一个 0 到 15 之间的值。我怎样才能以有效的方式实现这一点,而不重复很多if语句或其他不太有效的解决方案?

标签: javajavafxbit-manipulation

解决方案


使用掩码,按位执行并检查0

private void selectCheckBoxes(int value, CheckBox... array){
    for (int i = 0; i < array.length; i++) {
        array[i].setSelected((value & (1 << i)) != 0);
    }
}

推荐阅读