在写项目的时候遇到了这个问题,当时的问题是进入while后,一直提示重新输入,后来发现是在catch中少了“input.next();”这句。
下面是正确代码实现:
利用try-catch来实现
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
int a=0;
Scanner input = new Scanner(System.in);//创建Scanner对象用于读取键盘输入
System.out.println("请输入一个整数!");//提示输入
while(true) { //这里true替换成input.hasNext()也行
try {
a = input.nextInt(); //如果输入的不为整数,会抛出一个InputMismatchException异常
break; //如果是整数,则退出while循环
}catch(Exception e) { //这里用Exception来捕获这个异常
System.out.println("您输入的不是整数,请继续输入一个整数!");
input.next(); //继续输入
}
}
System.out.println("您输入的整数为:"+a);//打印输入的整数
}
}
更简洁的实现方式
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
int a=0;
Scanner input = new Scanner(System.in);//创建Scanner对象用于读取键盘输入
System.out.println("请输入一个整数!");//提示输入
while(!(input.hasNextInt())) { //循环条件:输入不为整数
System.out.println("您输入的不是整数,请继续输入一个整数!");
input.next(); //继续输入
}
a = input.nextInt();
System.out.println("您输入的整数为:"+a);//打印输入的整数
}
}