尝试验证用户是否键入了“是”或“否”

Trying to validate whether or not the user typed in Yes or No

提问人:BlitzDrache 提问时间:9/29/2017 最后编辑:BlitzDrache 更新时间:9/29/2017 访问量:1720

问:

因此,我正在尝试验证用户输入的是“是”还是“否”,并继续询问,直到他们输入一个或另一个。这是我到目前为止的代码。

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

我哪里出错了?我是 java 新手。任何帮助将不胜感激。

编辑:我不擅长写作。我要追求的是这种逻辑。 询问用户是否想要钻石而不是金字塔。 一个。用户必须键入“是”或“否”。 b.如果用户键入这两个内容,请再次询问,直到他们提供适当的输入。

java while-loop 布尔逻辑

评论

2赞 yshavit 9/29/2017
我正在删除 Javascript 标签;Java 和 Javascript 是不相关的语言。在你的问题中包括出了什么问题也很好--症状,就像它一样。你已经描述了你想要的东西,你给出了一些代码,但你实际上并没有说出问题是什么。也就是说,试着计算出 的两个可能值中的每一个的计算结果。d != false || d != trued
0赞 patrik 9/29/2017
听起来像是我:)的典型领导者。“你能做到吗?”,我:“不”,他:“输入无效。请再试一次”

答:

2赞 Naman 9/29/2017 #1

你最终会有一个无限循环

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

因为即使更新时要么是,要么是,在这两种情况下都满足上述条件。相反,您可以将其更改为dbooleantruefalse

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赞 user2023608 9/29/2017 #2

布尔值只能等同于 true 或 false,因此无论如何您的 while 循环都将执行,因为 d 将为 true 或为 false。我想你只是想做

while (d != true)
0赞 Salman 9/29/2017 #3

每当用户键入一个条件为假而另一个条件为真时,您都会在条件中使用 or(||) 运算符,这就是它无法正常工作的原因。 如果您想停止询问 True Value,请在下面写下条件。

while(d != true)