e l'operatore non funziona quando utilizzato nel blocco ID altrimenti

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

  •  25-08-2022
  •  | 
  •  

Domanda

Ho un blocco di codice, che controlla lo stato controllato della casella di controllo e visualizza il valore di conseguenza, ma nel mio codice ho un posto in cui devo usare l'istruzione come

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

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

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

else{
a="xyz";
}

Ottengo i valori se la casella di controllo1 o la casella di controllo 2 sono selezionate, ma quando sono selezionate entrambe le caselle di controllo ottengo il risultato come "ABC" solo

Qualche idea di cosa non va nel codice ??

È stato utile?

Soluzione

Questo perché è un else if invece di ifS. Una volta che il primo è soddisfatto, non sta controllando gli altri. Cambia l'ordine in cui li controlli. Quindi qualcosa di simile

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

Altri suggerimenti

Cambiare in:

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

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

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

else{
a="xyz";
}

Nel tuo codice se il CD1 fosse controllato, non andrebbe più nell'altro.

In una scala se altro, verrà eseguito solo un blocco, dovresti farlo come quanto segue:

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

O

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

Con altro se non lo è, entra nel primo se non entra nel resto di loro, prendi solo l'altro e l'utente solo e funziona

Modificare prima se condizione a

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

Al momento, dal primo se le condizioni dipendono solo dal valore di CB1, quindi il controllo va nel primo blocco.

Il controllo non va mai nel secondo blocco nella logica attuale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top