问题:我的代码有效,但我不明白为什么,如果不是相反的方式?如果输入"是"或"否" System.out.println("You must write 'Yes' or 'No'")
应该出现在控制台中?
请向dummie解释它是如何/为何以这种方式运作的。
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);
}
}
答案 0 :(得分:1)
您不会在循环中再次读取输入,因此您的输入不会改变:
while (!Input.equals("Yes") && !Input.equals("No")) {
System.out.println("You must write 'Yes' or 'No'");
Input = keyboard.nextLine();//<<---------------------
}
注意
为了良好的做法,不要在开头(输入)
中使用大写字母命名变量修改强>
就像@Ousmane一样,Mahy Diaw在评论中说你可以看看这个Java.lang.String.equalsIgnoreCase()
答案 1 :(得分:1)
如果您再次不读取用户输入,您的代码可以/将循环播放:
Input = keyboard.nextLine();
while (!Input.equals ("Yes") && !Input.equals ("No")){
System.out.println("You must write 'Yes' or 'No'");
Input = keyboard.nextLine();
}
也可以考虑使用equalsIgnoreCase,这样您就可以接受来自用户的案例变体输入....
答案 2 :(得分:0)
如果条件为真,则执行while
块。
您希望在输入与“是”和“否”不同时显示消息。
在java中,对于String类型,没有“不同”方法,但是有一个“等于”方法。 在这种情况下,“不同”可以被“不等于”取代。所以你想在它的同时进行显示 输入不等于“是”或“否”。
如果我们将条件翻译成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中,我们使用camelCase作为变量名,这就是为什么我写input
而不是Input
答案 3 :(得分:0)
THX!我现在修改了代码,效果更好,我最终理解为什么:)
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);
}
}