Wo liegt nur an dieser einfachen Bedingung mein Fehler?

Jesfreric

Aktives Mitglied
Liebes Forum

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...

Wo ist der Fehler?

Viele Grüße
Richi
 
Moin,

Java:
if((!letterPRE.equals("G") || !letterPRE.equals("H")) && (!numberPRE.equals("12"))){
//code bei true
}
else{
//code bei false
}
Bei letterPRE = "A" oder "B", etc... und numberPRE = "12" gibt die Schleife aber false aus;
FALSE ist doch korrekt !!

Du prüfst ja "(NICHT G oder NICHT H) UND (NICHT 12)"
Also bei "A" und "12" eben FALSE, das eben "12" ungleich "NICHT 12" ist !!

Gruß
Klaus
 
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,


schwierig...
 
Moin,

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 !!
Gruß
Klaus

[EDIT]
Wahrheitstabelle ? Wikipedia
[/EDIT]
 
Zuletzt bearbeitet:

Zurück
Oben