我正在使用while循环来确保输入到扫描仪对象的值是一个整数,如下所示:

while (!capacityCheck) {
        try {
            System.out.println("Capacity");
            capacity = scan.nextInt();
            capacityCheck = true;
        } catch (InputMismatchException e) {
            System.out.println("Capacity must be an integer");
        }
    }


但是,如果用户没有输入整数,则当它返回并接受另一个输入时,它只会重复打印“ Capacity”,然后在catch中输出,而不要求更多输入。如何停止呢?

最佳答案

scan.nextLine();


将这段代码放在您的catch块中,以使用非整数字符以及保留在缓冲区中的换行符(因此,如果输入错误,则无限打印catch sysout)输入。

当然,还有其他更清洁的方法可以实现所需的功能,但是我想这将需要对代码进行一些重构。

10-06 04:21
查看更多