Frage

Dies funktioniert

if ((a >= 40 && a <= 50) || (a >= 60 && a <= 80))
// do something

Wie mache ich das Gegenteil davon?

if ((a < 40 && a > 50) || (a < 60 && a > 80))
// do something

Der Code funktioniert nicht wie erwartet. Ich möchte so etwas wie , wenn nicht (Bedingung)

War es hilfreich?

Lösung

Sie können unter De Morgan Gesetze .

1. !((a >= 40 && a <= 50) || (a >= 60 && a <= 80))

2. (!(a >= 40 && a <= 50) && !(a >= 60 && a <= 80))

3. ((!(a >= 40) || !(a <= 50)) && (!(a >= 60) || !(a <= 80))

4. ((a < 40 || a > 50) && (a < 60 || a > 80))


or in other words: (a < 40 || (50 < a && a < 60) || 80 < a)

Andere Tipps

if ((a < 40 || a > 50) && (a < 60 || a > 80))
// do something

Während ich würde empfehlen, herauszufinden, wie man es richtig funktioniert (durch Umschreiben)

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

funktionieren soll, glaube ich.

Sie müssen eine "OR"

if ((a < 40 || a > 50) && (a < 60 || a > 80))

Oder ein NOT

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

Sie zweites Beispiel

if ((a < 40 && a > 50) || (a < 60 && a > 80))

macht keinen Sinn, als a nicht beide weniger sein kann als 40 und mehr als 50 (oder weniger als 60 und mehr als 80) zur gleichen Zeit.

So etwas wie

if (!((a < 40 && a > 50) || (a < 60 && a > 80)))

oder

if ((a < 40 || a > 50) && (a < 60 || a > 80))
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

Unter der Annahme, dass Sie das Äquivalent von

wollen
if ( not ((a >= 40 && a <= 50) || (a >= 60 && a <= 80)) )

dann, wenn Sie über den ursprünglichen Ausdruck denken, sollte es sein

if (a < 40 || (a > 50 && a < 60) || a > 80)

Der erste Ausdruck ist so dass a eine Zahl von 40 bis 50 sein oder von 60 bis 80 negiert, dass in Englisch und Sie eine Zahl kleiner möge als 40 oder zwischen 50 und 60 oder größer als 80.

De Morgan Gesetze können Sie eine genaue Antwort zu bekommen, aber ich ziehe Code, den Sie laut lesen kann und das Gefühl von machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top