2016-07-16 5 views
0

Sorry, wenn die Frage nicht viel Sinn macht, bin ich sehr neu in Java. Also hier ist mein Problem: Ich mache ein Text-Adventure-Spiel (sehr einfach im Moment) und ich habe eine Zeichenfolge (choice1) erstellt, die der Antwort entspricht, die der Spieler einer Frage gibt, die das Spiel stellt. Die Antwort soll entweder Norden, Norden, Süden oder Süden sein. Als ich herausfand, dass es egal war, was ich tippte, es war eine ungültige Antwort, machte ich das Spiel Display, was choice1 gleich war, als ich meine Antwort eintippte. Ich fand, dass wenn ich nach Norden tippte, es nach Norden zeigte, wenn ich nach Süden, Süden usw. tippte. So hatte es richtig aufgenommen, was ich eingegeben hatte, aber es sagte immer noch, dass es eine ungültige Antwort war. Hier ist mein Code (einschließlich des Teils, der anzeigt, welche Auswahl1 gleich ist):(Java) Wenn und wenn if-Anweisungen Zeichenfolgen nicht erkennen

Scanner answer = new Scanner(in); 
String choice1 = answer.nextLine(); 

out.println(choice1); 
if (choice1 == "north" || choice1 == "North") //If the answer is North 
{ 
    out.println("You start walking towards the mountains in the distance. A cold wind picks up from behind you."); 
} 

else if (choice1 == "south" || choice1 == "South") //If the answer is south 
{ 
    out.println("You head into the forest and are quickly surrounded by trees. Patches of light dance on the floor to the whim"); 
} 

else if (choice1 != "south" || choice1 != "South" || choice1 != "north" ||  choice1 != "North") //invalid answer 
{ 
out.println("Please enter a valid answer."); 
} 

answer.close(); 
+0

Gemäß Ihrer Code-Anforderung möchten Sie && anstelle von || verwenden für die letzte else if-Anweisung. Wenn in Ihrem Fall eine dieser Bedingungen zutrifft, wird "ungültige Antwort" angezeigt. Für zB: Wenn Sie "north" als Eingabe angeben, ist es nicht gleich "south", "South" oder "North" und ansonsten wenn true und es wird ungültige Antwort gedruckt. –

+0

Anstelle von 'if-else' könnten Sie einen' switch-case' betrachten. –

Antwort

0

Get verwenden, um die Dokumentation zu lesen, können Sie nicht verwenden == Strings zu vergleichen, wenn man sich die Java-Dokumentation anschauen, werden Sie die Methode

boolean equals(String s) 

Wie finden verwenden:

if(choice1.equals("whatever")) 
    { 
     // TODO the jobe here 
    } 
+0

Sie ** können ** verwenden '=='. Andernfalls würde der Compiler dies nicht zulassen. Ich würde sagen, Sie sollten nicht ** oder ** nicht **. –

+0

'choice1.equals (" was auch immer ")' wird eine 'NullPointerException' werfen, wenn' choice1' 'null' ist. Um dies zu vermeiden, verwenden Sie "whatever" .equals (choice1) '. –

Verwandte Themen