Java If Bedingung nur wenn die drei Werte alle eine 0 enthalten soll diese nicht ausgeführt werden?

... komplette Frage anzeigen

3 Antworten

Das logische UND (&&) ist Wahr, wenn alle drei Aussagen war sind. Ist eine Zahl =0 gibt && falsch zurück und es geht ab zu Else.

Dein Problem ist, dass Du denkst, die Verneinung von A und B sei nicht A und nicht B, das stimmt aber nicht (siehe hier: https://de.m.wikipedia.org/wiki/De_Morgansche_Gesetze)

Ersetze Dein UND durch ODER (||) und es klappt. Wenn einer der Werte nicht 0 ist, wird if ausgelöst, ansonsten (wenn alle drei Werte 0 sind) wird Else ausgelöst.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DarkNightmare
07.07.2016, 16:34

Der gute Herr De Morgan mal wieder :) 

Danke, jetzt habe ich den Fehler endlich verstanden.

0

Die Variable anfang ist 0. Die anderen beiden nicht. Vereinfacht gesagt fragst du mit 

if (anfang != 0 && ende != 0 && anzahl != 0) {

und deinen Werten also

if (false && true && true) 

ab. Und das ergibt false. 

Richtig wäre an deiner Stelle eine oder-Abfrage, also

if (anfang != 0 || ende != 0 || anzahl != 0) {
Antwort bewerten Vielen Dank für Deine Bewertung

Dein if Statement zur Zeit sagt aus, dass der else Fall eintreten soll sobald  eine der variablen = 0 ist, und der if Fall nur dann eintreten soll wenn alle Variablen != 0 sind.

Ich würde if und else einfach umdrehen um den gewünschten Effekt zu erzielen.


    if (anfang == 0 && ende == 0 && anzahl == 0) {
System.out.println("anfang, ende und anzahl sind alle 0");
} else {
System.out.println("anfang, ende und anzahl sind nicht alle 0!");
}
}



Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?