2017-09-29 5 views
0

J'essaie donc de valider si l'utilisateur a tapé un oui ou un non et de continuer à demander jusqu'à ce qu'il tape l'un ou l'autre. Ceci est mon code jusqu'à présent.Essayer de valider si oui ou non l'utilisateur a tapé

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); 
} 

Où est-ce que je vais mal? Je suis nouveau à Java. Toute aide serait grandement appréciée.

Edit: Je suis terrible à l'écriture. Ce que je veux, c'est ce type de logique. Demandez à l'utilisateur s'il aimerait un diamant plutôt qu'une pyramide. a. L'utilisateur doit taper "Oui" ou "Non". b. Si l'utilisateur n'en tape aucun, demandez à nouveau jusqu'à ce qu'il fournisse une entrée appropriée.

+2

Je supprime la balise Javascript; Java et Javascript sont des langues sans rapport. Il est également bon d'inclure ce qui ne va pas dans votre question - le symptôme, pour ainsi dire. Vous avez décrit ce que vous voulez, et vous avez donné du code, mais vous n'avez pas vraiment dit quel était le problème. Cela dit, essayez de savoir ce que 'd! = False || d! = true' évalue à pour chacune des deux valeurs possibles de 'd'. – yshavit

+0

On dirait que c'est un chef de projet que j'ai :). "Pouvez-vous faire ceci?", Moi: "non", il: "Invalid Input. – patrik

Répondre

2

Vous terminez par avoir une boucle infinie à

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

depuis d étant un boolean mis à jour même quand serait soit true ou false et dans les deux cas satisferaient la condition ci-dessus. Au lieu de cela, vous pouvez le changer pour

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

booléens Ne peut correspondre à vrai ou faux que votre boucle while va exécuter, peu importe ce que parce que d sera vrai ou il sera faux. Je pense que vous voulez juste faire

while (d != true) 
0

Vous utilisez ou (||) opérateur dans vos conditions chaque fois que l'utilisateur a tapé une de votre condition est fausse et d'autres est vrai si c'est pourquoi sa ne fonctionne pas bien. si vous voulez arrêter de demander à la valeur réelle écrivez ci-dessous condition.

while(d != true)