You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中while循环内try-catch失效:输入字符串触发无限异常求助

嘿,我来帮你搞定这个问题!

解决Java while循环中try-catch处理nextInt()异常的无限循环问题

首先得搞懂为啥会陷入无限循环:当你输入字符串时,Scanner.nextInt() 没法解析这个非整数输入,会抛出InputMismatchException,但这个错误的输入还留在Scanner的输入缓冲区里——下一次循环时,nextInt()又会读到同一个错误输入,再次抛出异常,就这么反复循环下去了。

核心解决思路就是:捕获异常后,把缓冲区里的错误输入给“消费”掉,让下一次循环能正常接收新的输入。下面给你两种实用的解决方法:

方法一:用next()清空错误输入

在catch块里调用scanner.next(),把无法解析的错误字符串从缓冲区中取出,这样下一次循环就能等待用户的新输入了。示例代码如下:

import java.util.InputMismatchException;
import java.util.Scanner;

public class InputTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int targetNum = 0;
        boolean isInputValid = false;

        while (!isInputValid) {
            try {
                System.out.print("请输入一个整数:");
                targetNum = scanner.nextInt();
                isInputValid = true; // 输入正确,标记为有效,退出循环
                System.out.println("你输入的整数是:" + targetNum);
            } catch (InputMismatchException e) {
                System.out.println("输入错误!请输入一个有效的整数。");
                scanner.next(); // 关键步骤:把缓冲区里的错误字符串消费掉
            }
        }
        scanner.close();
    }
}

方法二:先读字符串再转整数

另一种更灵活的思路是:先把输入当作整行字符串读进来,再尝试转换成整数,这样就不会让错误输入滞留在缓冲区里。如果用户输入了带空格的内容,还可以先做个修剪处理,让程序更健壮。示例代码:

import java.util.Scanner;

public class InputTest2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int targetNum = 0;
        boolean isInputValid = false;

        while (!isInputValid) {
            System.out.print("请输入一个整数:");
            String inputContent = scanner.nextLine(); // 读取整行输入
            try {
                targetNum = Integer.parseInt(inputContent.trim()); // 修剪前后空格再转换
                isInputValid = true;
                System.out.println("你输入的整数是:" + targetNum);
            } catch (NumberFormatException e) {
                System.out.println("输入错误!请输入一个有效的整数。");
            }
        }
        scanner.close();
    }
}

这个方法还能处理用户输入空行、前后带空格的情况,适用性更广~

内容的提问来源于stack exchange,提问作者Atul Mehla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:21:23