我有7个复选框,将根据用户在复选框上选中的条件对按钮点击进行排序。现在我认为这意味着我将拥有128种不同的复选框组合,这意味着128条if语句将带我整晚!
有更好/更快的方法吗?也许是复选框的替代品?通过对与复选框相关联的值进行平均,将根据已选择的框的组合对列表进行排序。
以下示例:
if(ONE.isChecked())
{
//sort by 1
}
if(TWO.isChecked())
{
//sort by 2
}
if(THREE.isChecked())
{
//sort by 3
}
if(ONE.isChecked() && TWO.isChecked())
{
//sort by (1 + 2)/2
}
答案 0 :(得分:0)
首先使用7个复选框的数组,然后不需要重复的代码副本。
然后可以使用<<
(移位)和|
(或者设置一点)。
Checkbox[] checkboxes = ... // For instance { ONE, TWO, ... }
int index = 0;
for (int i = 0; i < checkboxes.length; ++i) {
index <<= 1;
if (checkboxes[i].isChecked()) {
index |= 1;
}
}
或者
for (int i = 0; i < checkboxes.length; ++i) {
if (checkboxes[i].isChecked()) {
index |= 1 << i;
}
}