Java判断输入是否为数字,若不是数字,则重新输入

Java判断输入是否为数字,若不是数字,则重新输入

第一开始使用while true实现,但是会导致无限循环,原因是输入流缓存没有被清空,scanner.nextInt()得到的值还是上次进入catch中的值,所以需要使用scanner.nextLine();scanner.next();换行。

1
2
3
4
5
6
7
8
9
10
11
12
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("输入ID");
try{
int playerId = scanner.nextInt();
break;
}catch (InputMismatchException e){
System.out.println("请输入整数类型的ID");
continue;
}
}

类似的比如:

1
2
3
4
5
6
7
8
9
10
int j=0;
Scanner input=new Scanner(System.in);
while(true){
if(input.hasNextInt()){
j=input.nextInt();
break;
}else{
System.out.println("请输入整数类型的ID");
}
}

正确的做法:

1
2
3
4
5
6
7
8
9
10
11
12
13
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("输入ID");
try{
int playerId = scanner.nextInt();
break;
}catch (InputMismatchException e){
System.out.println("请输入整数类型的ID");
scanner.nextLine();
continue;
}
}

1
2
3
4
5
6
7
8
int playerId = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("输入ID");
while(!scanner.hasNextInt()){
scanner.next();
System.out.println("请输入整数类型的ID");
}
playerId = scanner.nextInt();

参考: