Je suis confus sur la façon d'utiliser Ce que j'essaie de faire est d'imprimer quelque chose si le String commence avec un Exemple: si la chaîne est || code> et && code> dans la même instruction. "d" code> ou un "o" code>, et si l'on est vrai, vérifiez si la chaîne a une longueur de caractère de deux. P> "de" code> il imprimera quelque chose. Cependant, si c'est "SE" code> il n'imprimera rien. P> else if( (answer.startsWith("D") || answer.startsWith("O"))
&& (answer.length() == 2) ) {
//print something
}
3 Réponses :
Dans ce cas, vous devez vérifier la longueur d'abord car && sera true si le côté gauche et le côté droit vrais
Je ne vois pas pourquoi tu dis ça. Les tests code> startswith code> n'échoueront pas si vous les faites d'abord, et les tests Longueur CODE> n'échoueront pas si vous les faites de seconde.
Java applique un "court-circuit" à votre logique. Il fait la première partie (commence par "D" ou "O") et si c'est vrai, il procède à la deuxième partie (la longueur est 2). Toutefois, si la première partie est évaluée à FALSE, elle ne risque jamais d'exécuter la deuxième partie.
Votre chaîne "SE" n'ira jamais dans le bit "Imprimer quelque chose" car il ne respecte pas votre premier critère de commencer D ou O. et sur la base de votre description de ce que la logique devrait être correcte. P>
Si vous voulez réellement que si cela commence par "D" ou "O" << strong> ou fort > Est-ce de 2 caractères alors que votre relevé logique aurait dû être: p> éditer: oups, juste collé le code d'origine dans la première fois ...! P> < / p>
Je vérifierais d'abord la longueur et après les deux conditions par ex.
La modification de l'ordre d'exécution ne modifiera pas le résultat dans ce cas et l'imbrication supplémentaire ne fait rien d'être mis à part de limiter potentiellement le compilateur de faire des optimisations telles que la logique à court-circuit.
Votre logique a l'air correcte pour moi. Quel est le problème réel ici?
Notez que vous pouvez également utiliser
"de" .matches ("[faire].") Code> comme raccourci ici.Il se pourrait que ce ne soit pas ramifiant dans le
sinon si code> partie. Êtes-vous sûr que votresi code> échoue?Tout dépend de ce que la condition initiale si b> est peut-être quant à savoir si votre autre si b> sera vérifié. Si la condition initiale si b> la condition de l'instruction est vraie, votre ele) si b> ne sera pas exécuté.