0
votes

Trouvez ce qui échoue dans une instruction if

J'ai le code ci-dessous et je souhaite utiliser la condition qui échoue dans mon message toast. comment puis-je faire cela sans vérifier chacun si?

if (player1.isNullOrBlank () || player2.isNullOrBlank ())
Toast.makeText (ceci, "Veuillez entrer les deux noms de joueurs", Toast.LENGTH_LONG) .show ()


0 commentaires

4 Réponses :


-1
votes

Écrivez simplement le code. Ne pensez pas trop à cela. Vérifiez simplement ce que vous devez vérifier et fournissez de bons messages d'erreur. L'opérateur || ne génère pas de variable side-track à vérifier ou quoi que ce soit de ce genre. Écrivez simplement le code.

if (player1.isNullOrBlank() && player2.isNullOrBlank()) {
    Toast.makeText(this, "Please enter both player names", Toast.LENGTH_LONG).show()
} else if(player1.isNullOrBlank()) {
    Toast.makeText(this, "Please enter player name 1", Toast.LENGTH_LONG).show()
} else if(player2.isNullOrBlank()) {
    Toast.makeText(this, "Please enter player name 2", Toast.LENGTH_LONG).show()
}


5 commentaires

utilisez when-expression


@ IR42 Comment? Le if. Comment en faire une expression when ?


En quoi cela fait-il une différence et en quoi cela répond-il à la question du PO? Ce n'est pas "sans vérifier chacun si".


@gonutz: "Il suffit d'écrire le code. Nous appelons cela la programmation." Il n'y a pas besoin de snark ici. Aider à encadrer les nouveaux membres; cela apparaît comme condescendant.


@JeremyCaney C'est vrai, la sarcasme supprimée.



0
votes

Vous pouvez utiliser des journaux: xxx

et vérifier le journal rouge dans votre logcat lorsque vous l'exécutez.


2 commentaires

Cela ne préserve pas le Toast.show () de la question.


Il ne pose même pas de question sur Toast.show (). Il demande comment trouver ce qui échoue dans l'instruction if. C'est pourquoi je lui ai montré comment enregistrer les conditions qu'il avait.



0
votes

Essayez quelque chose comme ceci:

val nullPlayerNames = listOf("p1" to player1, "p2" to player2)
    .filter { (_, p) -> p.isNullOrBlank() }
    .joinToString(separator = ", ") { (tag, _) -> tag }
Toast.makeText(this, nullPlayerNames, Toast.LENGTH_LONG).show()


1 commentaires

Ne faites pas cela. La lisibilité est primordiale. Les performances sont bonnes aussi.



2
votes

Je voudrais simplement utiliser une expression when ici car vous allez devoir vérifier chaque condition indépendamment.

when {
    player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
    player1.isNullOrBlank() -> "Please enter a name for Player 1"
    player2.isNullOrBlank() -> "Please enter a name for Player 2"
    else -> null
}?.also { errorMessage ->
    Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
}

Un autre exemple, en utilisant également au lieu d'un devoir.

val errorMessage -> when {
    player1.isNullOrBlank() && player2.isNullOrBlank() -> "Please enter a name for both players"
    player1.isNullOrBlank() -> "Please enter a name for Player 1"
    player2.isNullOrBlank() -> "Please enter a name for Player 2"
    else -> null
}

if (errorMessage != null) {
    Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
} else {
    // success condition
}


1 commentaires

Merci. Cela semble le plus simple, étant donné qu'il n'y a aucun moyen de déterminer ce qui a réussi et échoué.