2017-09-29 1 views
0

So versuche ich zu überprüfen, ob der Benutzer ein Ja oder Nein eingab und weiter fragt, bis sie das eine oder das andere eingeben. Das ist bisher mein Code.Versuchen zu validieren, ob der Benutzer Ja oder Nein eintippte

System.out.println("Would you like a Diamond instead of a Pyramid? Type Yes or No");   
String input2 = scan.nextLine(); 
boolean d = input2.equals("Yes"); 
System.out.println(d); 

while ((d != false) || (d != true)) { 
    System.out.println("Invalid Input. Please try again"); 
    input2 = scan.nextLine(); 
    d = input2.equals("Yes"); 
    System.out.println(d); 
} 

Wohin gehe ich falsch? Ich bin neu in Java. Jede Hilfe würde sehr geschätzt werden.

Edit: Ich bin schrecklich beim Schreiben. Was ich vorhabe, ist diese Art von Logik. Fragen Sie den Benutzer, ob er einen Diamanten anstelle einer Pyramide möchte. a. Der Benutzer muss "Ja" oder "Nein" eingeben. b. Wenn der Benutzer keinen dieser Typen eingibt, fragen Sie erneut, bis die entsprechenden Eingaben verfügbar sind.

+2

Ich entferne das Javascript-Tag; Java und Javascript sind nicht verwandte Sprachen. Es ist auch gut zu sagen, was in Ihrer Frage falsch läuft - das Symptom, sozusagen. Du hast beschrieben, was du willst, und du hast Code gegeben, aber du hast nicht wirklich gesagt, was das Problem ist. Das heißt, versuchen Sie herauszufinden, was 'd! = False || d! = true wird für jeden der zwei möglichen Werte von "d" ausgewertet. – yshavit

+0

Klingt wie mein ein Prodject Führer Ich habe :). "Kannst du das tun?", Ich: "nein", er: "Ungültige Eingabe. Bitte versuche es erneut" – patrik

Antwort

2

Du endet in einer Endlosschleife

an mit
while ((d != false) || (d != true)) 

seit d ein boolean selbst zu sein, wenn entweder true oder false wäre aktualisiert und sowohl in den Fällen die obige Bedingung genügen würde. Stattdessen können Sie es ändern zu

System.out.println("Would you like a Diamond instead of a Pyramid? Type Yes or No");   
String input2 = scan.nextLine(); 
boolean d = input2.equalsIgnoreCase("Yes") || input.equalsIgnoreCase("No"); // confirms if the user input is Yes/No or invalid other than that 
.... 
while (!d) { // d==false ' invalid user input 
    System.out.println("Invalid Input. Please try again"); 
    input2 = scan.nextLine(); 
    d = input2.equalsIgnoreCase("Yes") || input.equalsIgnoreCase("No"); 
    System.out.println(d); 
    // also printing a boolean would print either true or false base on your input; you migt want to perform some other action 
} // this would exit on user input "Yes" 
0

Boolesche NUR wahr oder falsch gleichsetzen können so Ihre while-Schleife, egal ausführen wird, was denn d wahr sein wird, oder es wird falsch sein. Ich glaube, Sie wollen einfach nur tun

while (d != true) 
0

Sie verwenden oder Operator (||) in Ihren Bedingungen, wenn Benutzer eingegeben einer Ihrer Bedingung falsch ist und andere stimmt, ist also, warum es funktioniert nicht gut. Wenn Sie aufhören wollen, bei der Eingabe des wahren Wertes zu fragen, schreiben Sie unter Bedingung.

while(d != true)