Scanner输入异常

本人刚学Java,遇到了一个难以解决的问题
代码如下:
public class test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("输入物品价格");
int prise = sc.nextInt();
System.out.println("价格合理");
} catch (Throwable e) {
e.printStackTrace();
System.out.println("数据不合法");
}
System.out.println("输入a");
int a = sc.nextInt();
System.out.println("输入b");
int b = sc.nextInt();
}
}

img

具体问题:
如果输入的prise为int类型,不触发异常的话,则接下来的代码都能正常运行,如果输入的prise为string类型或者别的类型,在执行了catch内部的语句后,当执行到int a = sc.nextint()时会直接结束进程,具体图片如下:

img

出现这种情况的原因是因为 scanner.nextInt() 出现异常后不能重新输入, 你需要重新 new 一个 scanner

  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Scanner键盘输入

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("输入物品价格");
int prise = sc.nextInt();
System.out.println("价格合理");
} catch (Throwable e) {
e.printStackTrace();
System.out.println("数据不合法");
}
Scanner sc1 = new Scanner(System.in);

System.out.println("输入a");
int a = sc1.nextInt();
System.out.println("输入b");
int b = sc1.nextInt();
}