Funktionieren die oder pipes nicht?

8

Für mein allererstes Java Projekt versuche ich ein einfaches textbasiertes Spiel zu erstellen. Es scheint, als ob die oder Pipes nicht funktionieren und wenn ich versuche etwas einzugeben, nachdem es nicht funktioniert hat; Ich muss es neu starten.

%Vor%

Start und Anfang funktioniert, aber ich habe den ersten Buchstaben wie ich || verwendet für nicht. Wenn ich diese benutze, muss ich es neu starten, weil ich nichts tippen kann, aber ich habe eindeutig oder Pfeifen, die sagen, eines zu verwenden. Hat jemand eine Idee, was das verursacht?

    
Melon 05.08.2015, 20:06
quelle

3 Antworten

6
%Vor%

Es prüft sowohl den unteren als auch den oberen Fall. Sie müssen die equals () -Methode nicht zweimal aufrufen, um den Code und die Lesbarkeit zu optimieren.

Ich hoffe, das wird Ihr Problem lösen.

    
Ankur Mahajan 05.08.2015, 20:19
quelle
16
%Vor%

Dies wird von links nach rechts ausgeführt, also wird zuerst in.nextLine().equals("Start") ausgeführt.

Nehmen wir an, Sie geben "start" ein. Die linke Seite gibt false zurück. Die Bewertung des gesamten Ausdrucks wird fortgesetzt. Die rechte Seite wird ausgeführt, in.nextLine().equals("start") . Also liest es eine andere Zeile, wartet auf Ihre andere Eingabe. Das ist nicht was du willst.

Um dies zu beheben (dies ist auch eine allgemeine Regel): ändern Sie nicht den Zustand in der if Bedingung . Mit anderen Worten: Ausdruck in der Bedingung sollte keine Nebenwirkungen haben.

Sie können das Ergebnis der Methode, die den Status in.nextLine() ändert, einer Referenz zuordnen:

%Vor%

Sie können die Bedingung auch wie folgt schreiben:

%Vor%

oder

%Vor%

Jetzt ist eine beliebige Fallkombination in Ordnung, auch "START" .

Last but not least: Diese || werden nicht Pipes genannt. Wenn Sie im Programmierkontext das Wort "pipe" verwenden, denken viele Leute an Unix-Pipes , | Symbol in der Befehlszeile.

In Java || ist " logisch oder Operator", " logisch oder". Zur Unterscheidung mit " binary oder", | , was sehr unterschiedlich ist.

    
Adam Stelmaszczyk 05.08.2015 20:10
quelle
3

Speichern Sie die Scannereingabe in einem String wie folgt:

%Vor%

Und dann bewerten Sie in Ihren bedingten Anweisungen

    
andrewdleach 05.08.2015 20:09
quelle

Tags und Links