Comme nous le savons déjà, il est possible de rendre ce code évalué à vrai grâce aux excellentes réponses d' Erwin Bolwidt et phflack , je voulais montrer que vous devez garder un haut niveau d'attention lorsque vous traitez avec une condition qui ressemble à celle présentée dans la question, car parfois ce que vous voyez n'est peut-être pas exactement ce que vous pensez.
C'est ma tentative pour montrer que ce code s'imprime Success!
sur la console. Je sais que j'ai un peu triché , mais je pense toujours que c'est un bon endroit pour le présenter ici.
Quels que soient les objectifs d'écrire un code comme celui-ci, il vaut mieux savoir comment gérer la situation suivante et comment vérifier si vous ne vous trompez pas avec ce que vous pensez voir.
J'ai utilisé le cyrillique «a» qui est un caractère distinct du latin «a». Vous pouvez inspecter les caractères utilisés dans l'instruction if ici .
Cela fonctionne car les noms des variables proviennent de différents alphabets. Ce sont des identifiants distincts, créant deux variables distinctes avec une valeur différente dans chacune.
Notez que si vous voulez que ce code fonctionne correctement, le codage des caractères doit être remplacé par un codage prenant en charge les deux caractères, par exemple tous les codages Unicode (UTF-8, UTF-16 (en BE ou LE), UTF-32, même UTF-7 ), ou Windows-1251, ISO 8859-5, KOI8-R (merci - Thomas Weller et Paŭlo Ebermann - de l'avoir signalé):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(J'espère que vous n'aurez plus jamais à faire face à ce genre de problème à l'avenir.)
&&
est unand
opérateur logique , ce qui signifie qu'ila
doit avoir les valeurs 1, 2 et 3 en même temps, ce qui est logiquement impossible. La réponse est NON, pas possible. Voulez-vous écrire uneif
instruction qui vérifie sia
a l'une des valeurs 1, 2 OU 3?