Da wir bereits wissen, dass es dank der großartigen Antworten von Erwin Bolwidt und phflack möglich ist , diesen Code als wahr auszuwerten , wollte ich zeigen, dass Sie bei der Behandlung einer Bedingung, die wie die vorgestellte aussieht, ein hohes Maß an Aufmerksamkeit auf sich ziehen müssen in der Frage, da manchmal das, was Sie sehen, möglicherweise nicht genau das ist, was Sie denken, dass es ist.
Dies ist mein Versuch zu zeigen, dass dieser Code Success!auf der Konsole gedruckt wird. Ich weiß, dass ich ein bisschen geschummelt habe , aber ich denke immer noch, dass dies ein guter Ort ist, um es hier zu präsentieren.
Egal, wozu das Schreiben von Code wie diesen dient - es ist besser zu wissen, wie man mit der folgenden Situation umgeht und wie man prüft, ob man mit dem, was man zu sehen glaubt, nicht falsch liegt.
Ich habe das kyrillische 'a' verwendet, das sich vom lateinischen 'a' unterscheidet. Sie können die in der if-Anweisung verwendeten Zeichen hier überprüfen .
Dies funktioniert, weil die Namen der Variablen aus verschiedenen Alphabeten stammen. Sie sind unterschiedliche Bezeichner, wodurch zwei unterschiedliche Variablen mit jeweils unterschiedlichen Werten erstellt werden.
Beachten Sie, dass, wenn dieser Code ordnungsgemäß funktionieren soll, die Zeichenkodierung in eine geändert werden muss, die beide Zeichen unterstützt, z. B. alle Unicode-Kodierungen (UTF-8, UTF-16 (in BE oder LE), UTF-32, sogar UTF-7) ) oder Windows-1251, ISO 8859-5, KOI8-R (danke - Thomas Weller und Paŭlo Ebermann - für den Hinweis):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(Ich hoffe, Sie werden sich in Zukunft nie mehr mit solchen Problemen befassen müssen.)
&&ist ein logischerandOperator, was bedeutet,adass er gleichzeitig den Wert 1, 2 und 3 haben sollte, was logisch unmöglich ist. Die Antwort ist NEIN, nicht möglich. Möchten Sie eineifAnweisung schreiben , die prüft, obaeiner der Werte 1, 2 ODER 3 vorliegt?