在while循环中使用try-catch(java)

在while循环中使用try-catch(java),java,try-catch,Java,Try Catch,我想写一个简单的程序,要求一个数字,如果用户输入一个数字,它将结束,否则它将打印一个错误,并再次要求一个数字。问题是,我的程序只是不断打印错误消息(“不是有效的输入。错误:null”),并且不再要求输入数字 import java.util.InputMismatchException; 导入java.util.Scanner; 公共课号{ 公共静态void main(字符串[]args){ 数字(); } 公共静态整数(){ System.out.print(“输入一个数字:”); 扫描仪读取

我想写一个简单的程序,要求一个数字,如果用户输入一个数字,它将结束,否则它将打印一个错误,并再次要求一个数字。问题是,我的程序只是不断打印错误消息(“不是有效的输入。错误:null”),并且不再要求输入数字

import java.util.InputMismatchException;
导入java.util.Scanner;
公共课号{
公共静态void main(字符串[]args){
数字();
}
公共静态整数(){
System.out.print(“输入一个数字:”);
扫描仪读取线=新扫描仪(System.in);
布尔isInteger=false;
而(!isInteger){
试一试{
int numbers=readLine.nextInt();
系统输出打印项次(数字);
isInteger=true;
}捕获(输入不匹配异常e){
System.err.println(“不是有效的输入。错误:+e.getMessage());
}
}
返回0;
}
}

是的,我希望它能正常工作,谢谢@奥利普夫扫描仪是臭名昭著的丑陋使用。旧代码通常需要从头重写,如下所示。
    Scanner sc = new Scanner(System.in);
    while (sc.hasNext()) {
        if (sc.hasNextInt()) {
            int number = sc.nextInt();
            System.out.println(number);
        } else {
            System.err.println("Not a valid input. Error :" + sc.next());
        }
    }