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

如何用Scanner验证用户输入是否为整数?含国家代码校验需求

嘿,这两个和Java Scanner相关的问题我门儿清,给你一步步讲明白!

问题解答

1. 如何使用Scanner工具检查用户输入的内容是否为整数?

Scanner自带的hasNextInt()方法就是专门干这个的!它会先判断输入缓冲区里的下一个内容是不是整数:是就返回true,不是就返回false。不过这里有个容易踩的坑:如果用户输入了非整数,这个无效内容会留在缓冲区里,要是不处理,下次调用hasNextInt()会一直返回false,直接导致死循环。所以必须用next()或者nextLine()把无效输入清掉。

基础检查示例

import java.util.Scanner;

public class IntegerChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入一个整数:");
        if (scanner.hasNextInt()) {
            int inputNum = scanner.nextInt();
            System.out.println("你输入的整数是:" + inputNum);
        } else {
            System.out.println("输入的不是整数!");
            // 清除缓冲区里的无效输入,避免后续操作出问题
            scanner.next();
        }
        
        scanner.close();
    }
}

循环直到输入正确的示例

如果想让用户一直输入直到给出有效整数,可以用循环实现:

import java.util.Scanner;

public class IntegerCheckerLoop {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int validNum = 0;
        boolean isInputValid = false;
        
        while (!isInputValid) {
            System.out.print("请输入一个整数:");
            if (scanner.hasNextInt()) {
                validNum = scanner.nextInt();
                isInputValid = true;
                System.out.println("终于输入正确啦!整数是:" + validNum);
            } else {
                System.out.println("输入无效,请重新尝试!");
                scanner.next(); // 必须清掉无效输入,不然循环会卡死
            }
        }
        
        scanner.close();
    }
}

2. 实现引导用户输入国家名称和代码的程序

结合上面的整数检查逻辑,我们可以写出完全符合需求的程序:先获取国家名称(支持带空格的名称),然后循环获取国家代码,只要输入非整数就显示Invalid Input,直到用户输入有效整数为止。

完整代码示例

import java.util.Scanner;

public class CountryInputHandler {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 获取国家名称(用nextLine()支持带空格的名称,比如"United States")
        System.out.print("请输入国家名称:");
        String countryName = scanner.nextLine();
        
        // 获取国家代码,确保是整数
        int countryCode = 0;
        boolean isCodeValid = false;
        
        while (!isCodeValid) {
            System.out.print("请输入国家代码(必须为整数):");
            if (scanner.hasNextInt()) {
                countryCode = scanner.nextInt();
                isCodeValid = true;
                // 输出最终结果
                System.out.println("\n你输入的信息如下:");
                System.out.println("国家名称:" + countryName);
                System.out.println("国家代码:" + countryCode);
            } else {
                System.out.println("Invalid Input");
                scanner.next(); // 清除无效输入,防止死循环
            }
        }
        
        scanner.close();
    }
}

如果需要额外限制国家名称不能为空,可以在获取名称后加个判断:比如如果countryName.trim().isEmpty(),就提示用户重新输入名称,这个可以根据需求自行扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:31:49