Java 如何防止用户输入无效答案
我试图阻止用户输入除是或否之外的任何内容,但当他们这样做时,总是说“错误,请永远重试”Java 如何防止用户输入无效答案,java,Java,我试图阻止用户输入除是或否之外的任何内容,但当他们这样做时,总是说“错误,请永远重试” publicstaticvoidmain(字符串[]args){ System.out.println (“是否要添加接收。是或否”); 扫描仪目标=新扫描仪(System.in); 字符串TempAnswer; TempAnswer=target.nextLine(); 布尔标志=真; while(flag==true){ 如果(“是”。相等信号情况(TempAnswer)){ System.out.pri
publicstaticvoidmain(字符串[]args){
System.out.println
(“是否要添加接收。是或否”);
扫描仪目标=新扫描仪(System.in);
字符串TempAnswer;
TempAnswer=target.nextLine();
布尔标志=真;
while(flag==true){
如果(“是”。相等信号情况(TempAnswer)){
System.out.println(“是”);
flag=false;
}else if(“否”。相等信号情况(TempAnswer)){
系统输出打印项次(“否”);
flag=false;
}否则{
System.out.println(“错误再次输入!!”;
}
}
}
在while循环中,您永远不会将输入值重新分配给您的TempAnswer
变量,循环将无限运行,因为您永远不会根据用户的输入更改布尔值
少数旁注:
while(true)
而不是定义布尔变量flag
并将其用作条件;相应地,使用break代码>而不是将标志设置为false
publicstaticvoidmain(字符串[]args){
System.out.println(“您想添加receipt.Yes还是No”);
扫描仪目标=新扫描仪(System.in);
字符串tempAnswer=“”;
while(true){
如果(“是”。相等信号情况(tempAnswer)){
System.out.println(“是”);
打破
}else if(“否”。相等信号情况(tempAnswer)){
系统输出打印项次(“否”);
打破
}否则{
System.out.println(“错误再次输入!!”;
tempAnswer=target.nextLine();
}
}
}
摆脱多余的呼叫,确保在循环中阅读答案。如果不这样做,您将无限期地循环,因为您没有更改循环条件
对于这样小的范围,使用break来中断循环,而不是使用标志
另外,不要使用Boolean
,而是使用Boolean
。您可能永远不必使用布尔值
,所以不要使用它
publicstaticvoidmain(字符串[]args){
System.out.println(“您想添加receipt.Yes还是No”);
扫描仪目标=新扫描仪(System.in);
while(true){
字符串tempAnswer=target.nextLine();
如果(“是”。相等信号情况(tempAnswer)){
System.out.println(“是”);
打破
}
如果(“否”。相等信号情况(tempAnswer)){
系统输出打印项次(“否”);
打破
}
System.out.println(“错误再次输入!!”;
}
}
键入正确答案后,尝试打破循环
public static void main(String[] args) {
System.out.println
("Would you like to add a Reciept. Yes or No");
Scanner target = new Scanner(System.in);
String TempAnswer;
TempAnswer = target.nextLine();
while (True) {
if ("yes".equalsIgnoreCase(TempAnswer)) {
System.out.println("Yes");
break;
} else if ("no".equalsIgnoreCase(TempAnswer)) {
System.out.println("No");
break;
} else {
System.out.println("Error Enter Again!!");
}
}
}
据我所知,您不能使用控制台输入。通过创建只包含正确答案的下拉列表
while(flag)
这就足够了,请遵守Java约定。变量名以小写字母开头。您应该能够遵循程序流程并查看逻辑。如果输入的anser不正确,则转到else子句,打印“Error enter REACH!”然后重新开始循环。这将导致您转到else子句,打印。。。您需要再次获取用户输入。您遇到了与op相同的问题…而且Java SE中没有定义True
。