java - 给出 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 个CheckBox
es 之间返回一个选择/未选择的组合,给出一个 0 到 15 之间的值。我怎样才能以有效的方式实现这一点,而不重复很多if
语句或其他不太有效的解决方案?
解决方案
使用掩码,按位执行并检查0
:
private void selectCheckBoxes(int value, CheckBox... array){
for (int i = 0; i < array.length; i++) {
array[i].setSelected((value & (1 << i)) != 0);
}
}
推荐阅读
- dropdown - 如何在角度 8 中的 ng-select 中使用键值对
- reactjs - 如何在 ReactJS 中使用多个 baseURL axios?
- asp.net-identity - 如何访问类库中的 User.Identity.GetUserId()
- c++ - 访问冲突读取位置(原始指针变量)
- java - 如何在Java中分解多赋值同一行?
- hibernate - @Transactional 中的 Spring Data JpaRepository saveAndFlush 不起作用
- here-api - 如何在 HERE 地图中删除默认 TTS 播放/音频
- angular - 如何使角度(ng zorro v.7)可拖动的蚂蚁设计模式?
- python - 为什么我的 tkinter 回调不返回密码?
- python - 在 Python 中计算多个值的平均值的生成器函数