我第一次提的问题不够清晰,我编辑了一下:
在这里我的思路是如果输入的不是整数,把异常捕获然后打印重新输入后能够重新输入。
但是事实是输入了字符串后,程序进入了死循环不停地打印重新输入
我第一次提的问题不够清晰,我编辑了一下:
nextInt 是 输入整数的用法,你输入字符串,也就是会抛出 输入不匹配的报错,因为你捕获了异常,且打印了”请重新输入“; 这时进入循环,判断hasNext,又等待nextInt 输入,因为输入流里还是之前输入的字符串,nextInt还是 会抛出 输入不匹配的报错。最终导致死循环。
hasNext 解释:
https://blog.csdn.net/gao_zhennan/article/details/80562548
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
try {
int i = scanner.nextInt();
System.out.println(i);
break;
} catch (Exception e) {
e.printStackTrace();
System.out.println("请重新输入");
scanner.nextLine();
}
}
}
}