If-Schleife mit mehreren Bedingungen (logisches oder)

〖Victor〗

Grünschnabel
Hallo zusammen,
ich bin neu hier und komme gerade nicht mit einer Teilaufgabe weiter und hoffte, ihr könntet mir weiterhelfen.

Und zwar, wollte ich den User dazu auffordern einen Input über die Konsole einzugeben, falls dabei der Input nicht w, a, s oder d sei, sollte eine Fehlermeldung kommen, die sich so lange wiederholt bis der Input eins dieser 4 Möglichkeiten sei.

Das war mein Ansatz:

Java:
System.out.println("Geben Sie Ihren Input ein");
            input = sc.next().charAt(0);
            System.out.println(input);
    if (input != 'w' || input!= 's' || input!='d' || input!='a') {
                do {
                        System.out.println ("ERROR:  Versuchen Sie es nochmal");
                            input = sc.next().charAt(0);
                    } while (input == 'w' ||  input == 's' || input=='d' ||  input =='a') ;
        }

wenn ich das jedoch ausführe komme ich in einer Dauerschleife rein und komme auch nicht mehr raus.. Könntet ihr mir sagen, wieso oder was ich falsch mache?
Ich danke euch bereits im Voraus für eure Bemühungen und verbleibe
mit freundlichen Grüße :)

J. Victor
 
Zuletzt bearbeitet von einem Moderator:
Moderatorenarbeit: Hab mal den Ursprünglichen Text von Victor wieder hergestellt, da ein Thread ohne Frage sinnlos ist.
 
Mal ins Blaue geschossen: ist Dein 'input' ein String ??? :unsure:
Dann solltest Du die Vergleiche umbauen auf die schöne Methode 'equals' !! :rolleyes:

VG Klaus

EDIT: andernfalls ist der Codeschnipsel wohl zu kurz !!
 
Das ist ein klassischer Logik-Fehler.
Der Ausdruck (input != 'w' || input != 's' || inpu t!='d' || input !='a') ist immer erfüllt, denn wenn der Benutzer beispielsweise 'w' eingegeben hat, ist input trotzdem ungleich 's', wodurch der ganze Ausdruck zu true ausgewertet wird. Was du an dieser Stelle möchtest, ist && und nicht || ;)
 
Zurück