und Bediener funktionieren nicht, wenn sie in einem elendlichen ID -Block verwendet werden

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

  •  25-08-2022
  •  | 
  •  

Frage

Ich habe einen Codeblock, der den geprüften Status des Kontrollkästchens überprüft und den Wert entsprechend anzeigt, aber in meinem Code habe ich einen Ort, an dem ich eine Anweisung verwenden muss wie

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

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

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

else{
a="xyz";
}

Ich erhalte die Werte, wenn das CheckBox1 oder das CheckBox2 ausgewählt ist. Wenn beide Kontrollkästchen ausgewählt sind, erhalte ich nur als "ABC"

Irgendeine Idee, was ist los mit dem Code?

War es hilfreich?

Lösung

Das liegt daran, dass es ein ist else if Anstatt von ifs. Sobald der erste zufrieden ist, überprüft er die anderen nicht. Ändern Sie die Reihenfolge, in der Sie diese überprüfen. Also so etwas wie

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

Andere Tipps

Ändern:

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

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

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

else{
a="xyz";
}

In Ihrem Code, wenn CD1 überprüft würde, würde es nicht mehr in das Elend eingehen.

In einer Leiter eines if sonst wird nur ein Block ausgeführt. Sie sollten dies wie folgt tun:

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

ODER

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

Mit sonst, wenn er es nicht tut, betritt er den ersten, wenn er nicht den Rest eingibt

Ändern Sie zuerst, wenn

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

Derzeit geht die Kontrolle in den ersten Block.

Die Kontrolle geht nie in den zweiten Block in der vorliegenden Logik.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top