2016-05-18 11 views
1

Ich habe nicht eine Weile programmiert und ich versuche, in den Schwung der Dinge zurück zu kommen und das ist, wie weit ich gekommen bin. Meine Frage ist, wie schleife ich die zweite Frage so, dass, wenn die Antwort etwas außer einem Ja oder Nein ist, sie die Frage erneut stellt. Ich habe versucht, eine Schleife um die if-Anweisung zu legen, aber wenn ich versuche, eine andere Antwort vom Benutzer zu erhalten, sagt es mir, dass ich die Variable Antwort nicht verwenden kann, um dies zu tun. Ich denke, das ist eine einfache Lösung für das Schleifen, aber es fällt mir schwer, mich mit diesem speziellen Thema zu beschäftigen, vielen Dank im Voraus.Looping-Logik in Java

import java.util.Scanner; 
public class Practice { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Welcome to my simulation, please enter your name"); 
     String name = input.nextLine(); 
     System.out.println("Welcome " + name + " would you like to play a game?"); 
     String response = input.nextLine(); 


     boolean yes = new String("yes").equals(response.toLowerCase()); 
     boolean no = new String("no").equals(response.toLowerCase()); 


     if (yes){ 
      System.out.println("Which game woudl you like to play?"); 
     }else if (no){ 
      System.out.println("Fine then, have a good day!"); 
     } 
     else{ 
      System.out.println("please enter either yes or no"); 
     } 
    } 

} 
+2

Verwenden Sie nicht 'new String (" ja ")'. "Ja" wird gut gehen. – shmosel

+1

Der "Swing" der Dinge..heh .. – Eric

+0

@Eric aber ... es gibt kein Swing in dieser Frage. – shmosel

Antwort

5

Es gibt viele Möglichkeiten, dies zu tun. Hier ist der erste in den Sinn kam:

while (true) { 
    response = input.nextLine().toLowerCase(); 
    if (response.equals("yes") { 
     System.out.println("Which game woudl you like to play?"); 
     break; 
    } else if (response.equals("no") { 
     System.out.println("Fine then, have a good day!"); 
     break; 
    } else { 
     System.out.println("please enter either yes or no"); 
    } 
} 
+0

Ich musste auch meine booleschen Aussagen in die Schleife bringen, aber danach funktionierte es wie ein Zauber. Vielen Dank! –

-1

Wie wäre es

do{ 
    String response = input.nextLine(); 
    boolean yes = new String("yes").equals(response.toLowerCase()); 
    boolean no = new String("no").equals(response.toLowerCase()); 
    if (yes){ 
     System.out.println("Which game woudl you like to play?"); 
    }else if (no){ 
     System.out.println("Fine then, have a good day!"); 
    } 
    else{ 
     System.out.println("please enter either yes or no"); 
    } 
}while(!response.equals("yes") && !response.equals("no")); 
+0

Ich würde gerne wissen, warum ich einen Downvote –

+2

bekam ich nicht downvote. Aber der Code würde entweder einmal oder unendlich wiederholt, weil sich die Antwort darin nie ändert. –

+0

@ 911didbush guten Fang! –

-4
while(response =! yes || response || no) 

dies helfen sollte!

+0

http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – sinclair

+0

'=!' Ist kein gültiger Operator in irgendeiner Sprache, die ich kenne. Auch das scheint unglaublich, großartig, faszinierend falsch in jeder anderen Hinsicht. Ich würde empfehlen, [dieses grundlegende Java-Tutorial] (https://docs.oracle.com/javase/tutorial/getStarted/application/index.html) zu lesen, bevor Sie weitere Fragen dazu beantworten. –

0

Zunächst einmal, es einfacher zu machen auf sich selbst, Sie müssen nicht boolean Variablen verwenden. Sie können einfach die Methode .equals() verwenden, um zu testen, ob die Antwort gleich Ja oder Nein ist. In diesem Fall wäre es einfacher zu verwenden, wenn sonst Anweisungen wie folgt lauten würden:

if (response.equals("Yes")) 
{ 
    System.out.println("Which game woudl you like to play?"); 
} 

else if (response.equals("No")) 
{  
    System.out.println("Fine then, have a good day!"); 
} 

else if (!response.equals("Yes") && !response.equals("No")) 
{ 
    while (!response.equals("Yes") && !response.equals("No")) 
    { 
     System.out.println("please enter either yes or no"); 
     response = input.nextLine(); 
    } 
} 

Ich hoffe, dies war hilfreich für Sie.

+0

Ich weiß, ich habe nur den Gebrauch meiner Booleans geübt, denn bevor ich sie auf diese Weise benutzt habe, hatte ich keine Ahnung, dass du das tun könntest. –

+1

Ich verstehe. Es gibt so viele Möglichkeiten, wie es gemacht werden kann. Da draußen gibt es eine ganze Welt. Es ist wirklich gut zu üben, wie ich es im letzten Jahr herausgefunden habe –