为了保证用户输入的数据不会引起系统奔溃,这里提供一个在系统接收用户输入之前,就判断用户输入的数据是否符合要求,符合要求就接收,不符合要求就拒收
以输入int类型的数据为例
public class Demo1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");
if(input.hasNextInt()) {
int num = input.nextInt();
System.out.println("你输入的是:"+num);
}else {
System.out.println("你输入一个锤子");
}
}
}
请输入一个数字:
abc
你输入的是个锤子
请输入一个数字:
123
你输入的是:123
感兴趣的朋友可以查看Scanner类中hasNextInt()的源码:
public boolean hasNextInt(int radix) {
setRadix(radix);
boolean result = hasNext(integerPattern());
if (result) { // Cache it
try {
String s = (matcher.group(SIMPLE_GROUP_INDEX) == null) ?
processIntegerToken(hasNextResult) :
hasNextResult;
typeCache = Integer.parseInt(s, radix);
} catch (NumberFormatException nfe) {
result = false;
}
}
return result;
}