Frage zu Java: if Abfrage?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ja, das geht mit logischen Operatoren

if (req.equals(pw) && req.equals(pw2) && req.equals(pw3)) {
}

Dann geht er erst in den Block, wenn alle mit && verknüpften Bedingungen erfüllt sind.

Woher ich das weiß:Berufserfahrung – Berufserfahrung
ZaoDaDong  26.06.2023, 11:44

Das ergibt keinen Sinn, warum und in welcher Situation sollten alle 3 Passworte gleich sein?

2
TheQ86  26.06.2023, 11:47
@ZaoDaDong

🤷‍♂️ Der Fragesteller wollte wissen, wie es theoretisch geht. Den Sinn kennt der FS allein. Kann aber auch sein, dass ich ihn falsch verstanden habe und er jeweils einen Branch für jeden Fall haben möchte. Dann wärs so wie:

if (req.equals(pw)) {
    // req = pw
} else if (req.equals(pw2)) {
    // req = pw2
} else if (req.equals(pw3)) {
    // req = pw3
} else {
   // was anderes
}
0
MrAmazing2  26.06.2023, 13:04
@TheQ86

Nö, du hast die Frage falsch verstanden. Lies sie noch mal durch und denk nach wie er es meinen könnte…

Was er will ist dieses if - else if - else if, aber mit nur einem Branch für alle.

0
Wild1 
Fragesteller
 26.06.2023, 11:47

Danke. Weißt du zufälligerweise auch, wie ich das umschreiben muss, dass nur eine Bedingung war sein muss?

0

Es gibt mehrere Möglichkeiten, je nach Situation:

Du prüfst mit einem logischen oder ||, also z.B. condition1 || condition2 liest man als condition1 oder condition2 und wenn auch nur eine true ergibt wird die expression zu true evaluiert.

Nested If Statements, du kannst in einem if block auch andere if Statements haben, wird aber irgendwann unübersichtlich und ergibt auch nur Sinn wenn du Code hast der immer ausgeführt werden soll wenn die erste condition true ergibt und Code der nur ausgeführt werden soll wenn die zweite Condition true ergibt.

In so einem Fall könnte ein Switch Statement funktionieren, da kannst du mehrere Werte angeben die mit einem Ursprungswert verglichen werden.

Ansonsten ergibt es Sinn die Werte nicht zu hardcoden über If Statements, sondern einfach eine Liste zu nutzen und zu prüfen ob der richtige Wert in der Liste ist, über eine Loop oder eine Funktion die über die Liste geht. So kannst du dynamisch andere Werte hinzufügen und dein Code bleibt der selbe egal mit wie vielen Werten du vergleichst, daher wäre das die sauberste Lösung.

Bei Passwörtern spezifisch hast du auch Sicherheitsprobleme, beispielweise wenn du die Passwörter in den Code schreibst könnte man eventuell über eine utility wie Strings das Passwort aus der Programmdatei in wenigen Sekunden extrahieren.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
Wild1 
Fragesteller
 26.06.2023, 12:14

Danke für die genaue Erklärung. Das mit dem auslesen des Passworts ist bei mir im Moment kein Problem, da ich dass nur zum Spaß programmiere und nicht mit der Absicht zum veröffentlichen oder ähnliches.

0
if (req.equals(pw) || req.equals(pw2) || req.equals(pw3))
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Von Experte BeamerBen bestätigt

Also wenn ich das jetzt richtig verstehe, möchtest du mehrere IF-Bedingungen in einer Schleife.

In der Doku gibt es dazu eine Erklärung

 else if

Damit kannst du eine IF-Bedingung an eine Else-Bedingung heften und so in einer schleife mehrere "Wenn"-Fälle abfragen.

Schau mal hier

Edit: Du kannst auch in einer If-Abfrage mehrere Bedingungen verketten (und, beides muss erfüllt sein). Das geht mit

&&
BeamerBen  26.06.2023, 12:17

Das Edit ist in dem Fall falsch, && ist eine UND Verknüpfung, durch else erreicht man aber ein ODER. Vermutlich meintest du ||.

2