java用户字符串输入验证和异常错误
我是Java编程新手,我正在尝试创建一个用户输入验证,以确保用户只输入三个可能字符串中的一个:哺乳动物、爬行动物和鸟类。但我一直在尝试验证和创建一个循环。到目前为止,我有:
public void validName() {
Scanner typeInput = new Scanner(System.in);
String [] type = {"Mammals", "Reptiles", "Birds"};
System.out.println("Enter Animal Type: ");
String atype = typeInput.next();
try {
if
(!Arrays.asList(type).contains(atype)){
System.out.println("Not a correct animal");
}
}
catch(Exception e){
System.out.println(e+"Plase add the correct Animal Type: (Mammals, Reptile, or Bird");
atype= typeInput.nextLine();}
while (atype.equalsIgnoreCase("Mammals") || atype.equalsIgnoreCase("Reptile") || atype.equalsIgnoreCase("Birds"));
{ System.out.println("Continue to next step");}
}
}
当我运行前面的代码时,我得到以下输出:
Please enter First Name
Cris
Please enter Last Name
Cruz
User logged In: Criz Cruz
Welcome to ZooOrganizer!
Enter Animal Type:
Cow
Not a correct animal
Continue to next step
------------------------------------------------------------------------
BUILD SUCCESS
-----------------------------------------------------------------------
我无法执行Catch异常,也无法通过循环让用户再次输入动物类型
public void validName() {
Scanner typeInput = new Scanner(System.in);
String [] type = {"Mammals", "Reptiles", "Birds"};
System.out.println("Enter Animal Type: ");
String atype = typeInput.next();
try {
if
(!Arrays.asList(type).contains(atype)){
System.out.println("Not a correct animal");
}
}
catch(Exception e){
System.out.println(e+"Plase add the correct Animal Type: (Mammals, Reptile, or Bird");
atype= typeInput.nextLine();}
while (atype.equalsIgnoreCase("Mammals") || atype.equalsIgnoreCase("Reptile") || atype.equalsIgnoreCase("Birds"));
{ System.out.println("Continue to next step");}
}
}
# 1 楼答案
如果您想考虑一下,您编写的提示实际上相当残酷。它不会通知用户预期输入的内容。您也可以显示如下提示:
提前了解用户的要求,如果可以,尽量简化输入。如果您这样做,则该用户可能产生的错误几乎完全消除,例如:
现在,用户可以看到您期望的输入。但是,您的代码仍然需要处理和注意一些问题,例如拼写错误、字母大小写不正确、未输入单词、,等等。在我看来,在控制台应用程序中写入单词爬虫类实际上是一种痛苦,这就是为什么我会避免使用这些应用程序,你知道:
是的,我不这么认为。。。。下一个应用程序
当您可以输入多个项目时,请使用菜单系统。这样,用户可以看到可用的选项,只需为所需菜单项输入单个字母或数字,例如:
这样做还可以减少执行有效性所需的代码量。输入的菜单选项是否为整数,条目是否大于或等于1,是否小于或等于4。如果没有,则告诉用户无效,并再次循环。以下是如何使用当前方案实现此目的:
# 2 楼答案
你应该使用Do。。。在这种情况下,While循环: