和else运算符在其他id块中使用时不工作

时间:2013-12-03 14:31:26

标签: java

我有一个代码块,它会检查复选框的检查状态&a​​mp;相应地显示值, 但在我的代码中我有一个地方,我必须使用像

这样的语句
if (cb1.isChecked()) {
a="abc";        
} 

else if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

如果选中checkbox1或checkbox2,我会得到值,但是当两个复选框都被选中时,我得到结果为" abc"仅

任何想法代码都错了吗?

5 个答案:

答案 0 :(得分:1)

这是因为else if代替if。一旦第一个满意,它就不会检查其他人。更改检查这些的顺序。像

这样的东西
if (cb1.isChecked() && cb2.isChecked()) {
    a="abc";        
} 
else if(cb1.isChecked()) {
    a="pqr";
}   
else if(cb2.isChecked()){
    a="asd";
}   
else{
    a="xyz";
}

答案 1 :(得分:0)

首先修改if条件

  

if(cb1.isChecked()&&!cb2.isChecked())

目前,由于第一个if条件仅取决于cb1的值,所以控制进入第一个块。

控制NEVER进入当前逻辑的第二个块。

答案 2 :(得分:0)

更改为:

if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if (cb1.isChecked()) {
a="abc";        
} 

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

在你的代码中,如果选中了cd1,它将不再进入else。

答案 3 :(得分:0)

在if else梯形图中,只执行一个块,您应该执行以下操作:

if (cb1.isChecked()) {
    a = cb2.isChecked() ? "pqr" : "abc";       
} else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

OR

if(cb1.isChecked() && cb2.isChecked()) {
    a="pqr";
}
else if (cb1.isChecked()) {
    a="abc";        
} 
else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

答案 4 :(得分:0)

如果他没有,那么他进入第一个如果他没有进入其他人只是拿走其他人和用户ifs并且它有效