如何使用 try and catch 验证用户输入?
How to validate user input with try and catch?
我需要编写一个程序来验证用户输入是否为整数,并防止它在使用输入不是整数时崩溃。所以我在这里使用 try
和 catch
。但是,当用户输入非整数时,我得到了一个无限循环。下面是我的代码
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
System.out.println("This is not integer");
}
} while(a < 1 || a > 10);
如果您真的想打破循环,如果用户输入的是非整数,那么您只需在代码中添加一个标志值即可:
int flag = 0;
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
System.out.println("This is not integer");
flag=1;
}
} while((a < 1 || a > 10)&&flag==0);
如果 flag=1,循环将中断。
通常使用正则表达式检查用户输入
卢克:
String userInput = "1234567";
boolean isNumber = userInput.matches("^\d+$");
System.out.println(isNumber);
一旦 Scanner 抛出异常,现有值将保持 "unconsumed"。为避免这种情况,您需要添加 sc.next() 行以使用现有输入并使扫描仪等待用户的下一个值。
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
sc.next(); // this "consumes" the invalid input and throws away
System.out.println("This is not integer");
}
} while(a < 1 || a > 10);
我需要编写一个程序来验证用户输入是否为整数,并防止它在使用输入不是整数时崩溃。所以我在这里使用 try
和 catch
。但是,当用户输入非整数时,我得到了一个无限循环。下面是我的代码
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
System.out.println("This is not integer");
}
} while(a < 1 || a > 10);
如果您真的想打破循环,如果用户输入的是非整数,那么您只需在代码中添加一个标志值即可:
int flag = 0;
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
System.out.println("This is not integer");
flag=1;
}
} while((a < 1 || a > 10)&&flag==0);
如果 flag=1,循环将中断。
通常使用正则表达式检查用户输入 卢克:
String userInput = "1234567";
boolean isNumber = userInput.matches("^\d+$");
System.out.println(isNumber);
一旦 Scanner 抛出异常,现有值将保持 "unconsumed"。为避免这种情况,您需要添加 sc.next() 行以使用现有输入并使扫描仪等待用户的下一个值。
do {
try {
a = sc.nextInt();
} catch (InputMismatchExpression e) {
sc.next(); // this "consumes" the invalid input and throws away
System.out.println("This is not integer");
}
} while(a < 1 || a > 10);