et l'opérateur ne fonctionne pas lorsqu'il est utilisé dans le bloc d'identité d'autre

StackOverflow https://stackoverflow.com/questions/20353906

  •  25-08-2022
  •  | 
  •  

Question

J'ai un bloc de code, qui vérifie l'état coché de la boîte à cocher et affiche la valeur en conséquence, mais dans mon code, j'ai un endroit où je dois utiliser une instruction comme

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

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

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

else{
a="xyz";
}

J'obtiens les valeurs si CheckBox1 ou CheckBox2 sont sélectionnées, mais lorsque les deux cases sont sélectionnées, je reçois le résultat comme "ABC"

Une idée de ce qui ne va pas avec le code ??

Était-ce utile?

La solution

C'est parce que c'est un else if à la place de ifs. Une fois que le premier est satisfait, il ne vérifie pas les autres. Changez l'ordre dans lequel vous les vérifiez. Alors quelque chose comme

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

Autres conseils

Changer pour:

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

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

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

else{
a="xyz";
}

Dans votre code, si CD1 était vérifié, il n'irait plus dans l'essentiel.

Dans une échelle si else, un seul bloc sera exécuté, vous devriez le faire comme ce qui suit:

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

OU

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

Avec autrement s'il ne le fait pas, il entre dans le premier s'il n'entre pas le reste d'entre eux, prenez simplement les silets et les sions uniquement et cela fonctionne

Modifier d'abord si condition à

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

À l'heure actuelle, comme la première si les conditions ne dépend que de la valeur de CB1, le contrôle va dans le premier bloc.

Le contrôle ne va jamais dans le deuxième bloc de la logique actuelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top