Frage von alexG93, 73

Wie überprüfe ich in Java ob 3 Variablen gleich sind ohne das über Kreuz abzufragen?

aka if(a==b==c) .. denn sonst müsste ich ja if(a==b && a==c && b==c) schreiben und das ist doch bescheuert da muss es doch was einfacheres geben

Antwort
von Orsovai, 55

Eine If-Anweisung verlang einen Boolschen Operator "True" oder "False". Ein Konstrukt, wie Du es vorschlägst kann das nicht leisten, zumindest nicht im strengen Sinn.

Vllt gibt es einen syntaktischen Trick, mir ist aber nichts bekannt.

Kommentar von alexG93 ,

wieso bei a=b=c nehmen a und b ja auch in einer zeile den wert von c an. also arbeitet java doch von rechts nach links - der logik nach sollte erstmal b==c und anschließend a==b verglichen werden und dann die einzelergebnisse und verknüpfen aka true && true = true

Kommentar von DoTheBounce ,

Nein. Wenn du a == b == c schreibst, dann wird das zwar von rechts nach links evaluiert. Dann wird zuerst b == c evaluiert und anschließend a gegen dieses Ergebnis. Also entweder a == true bzw. a == false

Kommentar von Orsovai ,

Ein Ausdruck der Form "x=y" ist EIN syntaktischer Ausdruck und wird nicht von rechts nach links abgearbeitet.

Antwort
von ceevee, 24

ja gut das beispiel ist jetzt nur mit 3 variablen.. was wenn ich 10 oder sogar mehr vergleichen will

Dann solltest du mal drüber nachdenken, diese Variablen in ein Array umzuorganisieren. Und dann kannst du dir zum Vergleichen 'ne Funktion schreiben.

Kommentar von DataIsBeautiful ,

Ja, das wäre eine einfache, gute Lösung.

Wenn du eine undefinierte Anzahl von Variablen hast, dann wüsstest du ja in deinem Fall auch gar nicht wie viele Variablen du vergleichen sollst.
Du könntest jedoch über ein Array iterieren, und müsstest dann nicht unbedingt die Anzahl der Elemente wissen, die zur Laufzeit gespeichert werden, da du bei der for-Schleife einfach sagen würdest, dass er das solange machen soll bis du das Ende des Arrays erreicht hast.

Antwort
von DoTheBounce, 38

if(a == b && a == c) ist schon ausreichend, b == c folgt dann logischerweise wenn die beiden Terme true sind. Einfacher geht es nicht.

Kommentar von alexG93 ,

ja gut das beispiel ist jetzt nur mit 3 variablen.. was wenn ich 10 oder sogar mehr vergleichen will

Kommentar von Tschoo ,

Wie schon angedeutet, für mehr Variablen überlegt dir was ...

Antwort
von MrKnowAll, 43

Du musst ja nur if(a == c) && (c == b) schreiben, denn wenn a gleich c ist und c gleich b, dann muss ja b gleich a sein

Kommentar von MrKnowAll ,

*(a == c && c == b)

Kommentar von alexG93 ,

ja gut das beispiel ist jetzt nur mit 3 variablen.. was wenn ich 10 oder sogar mehr vergleichen will

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten