编写一个输入验证循环,要求用户输入“是”或“否”
问题:我的代码有效,但我不明白为什么,它应该不是相反的方式?如果输入“是”或“否”,System.out.println("You must write 'Yes' or 'No'")
应该出现在控制台中?编写一个输入验证循环,要求用户输入“是”或“否”
请解释为什么它会如此/为什么这样工作。
import java.util.Scanner;
public class YesOrNo {
public static void main(String[] args) {
// Checkpoint 4.6 Write an input validation loop that asks the user to enter “Yes” or “No”.
String Input;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter Yes or No: ");
Input = keyboard.nextLine();
while (!Input.equals ("Yes") && !Input.equals ("No")){
System.out.println("You must write 'Yes' or 'No'");
}
System.exit(0);
}
}
A while
如果条件为真,则会执行块。
您想要显示消息,而的输入不同于“是”和“否”。
在java中,对于String类型,没有“differents”方法,但有一个“equals”方法。 在这种情况下,“不同”可以被“不等于”替代。所以你想要说明一下, 输入是不是等于“是”或“否”。
如果我们转换的条件为Java,您可以:
!(input.equals("Yes") || input.equals("No"))
布尔algreba说!(A||B)
等于(!A && !B)
。
所以,你可以前行转换为
!input.equals("Yes") && !input.equals("No")
这应该回答你关于为什么你的代码工作的问题。
现在在您的代码中仍然存在问题。如果用户写入的内容与“是”或“否”不同,则该消息将继续显示,用户将无法输入新值。你必须添加代码,每次执行一次循环来询问用户一个新的值:
while (!input.equals("Yes") && !input.equals("No")){
System.out.println("You must write 'Yes' or 'No'");
input = keyboard.nextLine();
}
注:在java中,我们使用驼峰的变量名,那为什么我写input
,而是如果Input
Thx!我现在明白了:)根据所有评论我已经修改了代码 – Chrippe
你不要在你的循环再读取输入,让你的输入没有改变过:
while (!Input.equals("Yes") && !Input.equals("No")) {
System.out.println("You must write 'Yes' or 'No'");
Input = keyboard.nextLine();//<<---------------------
}
注意
对于好的做法不命名您的变量在开始上信(输入)
编辑
像@Ousmane马伊 - 迪奥说,在评论,你可以在这个Java.lang.String.equalsIgnoreCase()
谢谢现在@OusmaneMahyDiaw检查我的编辑 –
你的代码,看看能/将循环永远如果你不再次读取用户输入:
Input = keyboard.nextLine();
while (!Input.equals ("Yes") && !Input.equals ("No")){
System.out.println("You must write 'Yes' or 'No'");
Input = keyboard.nextLine();
}
考虑因此,使用equalsIgnoreCase,您无需接受来自用户的变体输入。
@OusmaneMahyDiaw,好一个!谢谢!!! –
Thx!我修改现在的代码,工作得更好,我finaly明白为什么:)
import java.util.Scanner;
public class YesOrNo {
public static void main(String[] args) {
String input;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter Yes or No: ");
input = keyboard.nextLine();
while (!input.equals ("Yes") && !input.equals ("No")){
System.out.println("You must write 'Yes' or 'No'");
input = keyboard.nextLine();
}
while (input.equals ("Yes") || input.equals ("No")){
System.out.println("Thx");
break;
}
System.exit(0);
}
}
在Java中,我们使用驼峰的变量.... –