Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wo liegt nur an dieser einfachen Bedingung mein Fehler?
Ich habe eine simple If-Schleife geschrieben, wo ich meinen Fehler einfach nicht finde.
Java:
if((!letterPRE.equals("G") || !letterPRE.equals("H")) && (!numberPRE.equals("12"))){
//code bei true
}
else{
//code bei false
}
letterPRE und numberPRE sind beide als strings definiert.
Bei letterPRE = "A" oder "B", etc... und numberPRE = "12" gibt die Schleife aber false aus;
Bei allen anderen Beispielen funkioniert sie tadellos (etc. letterPRE = "H" und numberPRE = "11") und gibt true aus...
Lassen sich die Bedingungen nicht auf einmal verknüpfen?
Beispielsweise:
letter != (G oder H) aber number = 12 --- soll true sein
letter = (G oder H) aber number != 12 --- soll true sein
letter = G oder H und number = 12 --- soll false sein
Dachte wenn man die ersten beiden Bedingungen verknüpft käme
Wenn letter != (G oder H) UND wenn number != 12; dann true;
aber er dröselt einzeln auf in:
wenn number schon = 12 und nicht != 12, dann schon false...
Ich dachte er intepretiert beide Bedingungen bevor er entscheidet ob true oder false, aber er scheint jede Bedingung einzeln zu untersuchen:
Es sollte sozusagen nicht heißen:
Es muss letter != G oder H UND number != 12 sein,
sondern eher:
Falls letter != G oder H ist dann kann number ruhig 12 sein, oder wenn number 12 ist, dann müssen letter != G oder H sein,
mach Dir am besten zu jedem der drei Fälle eine passende Wahrheitswert-Tabelle!
Dann wird schnell klar, dass Du hier unterschiedliche Anzahl von Bedingungen vergleichen willst, was ganz sicher NICHT mit EINER if-Bedingung erschlagen werden kann!
Java:
letter != (G oder H) aber number = 12 --- soll true sein
==> (letter != G) UND (letter != H) UND (number == 12)
|-----------| |-----------| |------------|
==> nur dann TRUE, wenn alle drei (!!!) Ausdrücke TRUE sind !!
letter = (G oder H) aber number != 12 --- soll true sein
==> ((letter == G) ODER (letter == H)) UND (number != 12)
|--------------------------------| |------------|
==> nur dann TRUE, wenn diese beiden (!!!) Ausdrücke TRUE sind !!
letter = G oder H und number = 12 --- soll false sein
==> ((letter == G) ODER (letter == H)) UND (number == 12)
|-------------------------------| |------------|
==> nur dann TRUE, wenn diese beiden (!!!) Ausdrücke TRUE sind !!