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

Java中如何检查输入是否为整数?并过滤代码中的非整数输入

给Java数字处理程序添加输入校验的解决方案

嘿,我来帮你搞定这个输入校验的问题!你的原代码功能没问题,但确实缺少对非整数输入的处理——一旦用户输入字母、小数这类非整数,程序直接就会抛出异常崩溃。咱们可以通过Scanner的hasNextInt()方法来做校验,同时调整收集输入的逻辑,确保只保留有效整数,跳过无效输入。

核心修改点

  • 先校验要输入的数字数量:确保用户输入的是正整数,避免一开始就出错
  • 收集数字时,循环判断输入是否为整数:用hasNextInt()检查,有效就存入数组,无效则跳过(用next()吃掉无效输入)
  • 修复原代码的小问题:回文数判断时不要修改原输入数组的元素,否则会破坏原始数据

修改后的完整代码

import java.util.Scanner;

class ques2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count, index = 0;
        
        // 第一步:校验要输入的数字数量,确保是正整数
        System.out.print("How many numbers you want to enter? ");
        while (!sc.hasNextInt()) {
            System.out.println("请输入有效的正整数!");
            sc.next(); // 吃掉无效输入,避免死循环
        }
        count = sc.nextInt();
        int[] input = new int[count];
        
        System.out.println("请输入数字(非整数输入会被忽略):");
        // 第二步:收集有效整数,直到凑够指定数量
        while (index < count) {
            if (sc.hasNextInt()) {
                input[index] = sc.nextInt();
                index++;
            } else {
                String invalidInput = sc.next();
                System.out.println("跳过无效输入:" + invalidInput);
            }
        }
        
        // 输出原数字
        System.out.println("\n你输入的有效数字是:");
        for (int num : input) {
            System.out.println(num);
        }
        
        // 输出奇数
        System.out.println("\n其中的奇数是:");
        for (int num : input) {
            if (num % 2 != 0) {
                System.out.println(num);
            }
        }
        
        // 输出回文数(修复原代码:不修改原数组)
        System.out.println("\n其中的回文数是:");
        for (int num : input) {
            int original = num;
            int rev = 0;
            // 用临时变量temp计算反转,不改动原始数字
            int temp = original;
            while (temp > 0) {
                int digit = temp % 10;
                rev = rev * 10 + digit;
                temp = temp / 10;
            }
            if (original == rev) {
                System.out.println(original);
            }
        }
        
        sc.close();
    }
}

关键代码解释

  • sc.hasNextInt():这个方法会安全判断下一个输入是否为整数,不会抛出异常,是做输入校验的绝佳工具
  • 外层循环收集有效数字:只要还没凑够指定数量,就一直检查输入,有效就存入数组,无效就提示并跳过
  • 回文数判断部分:用temp临时变量代替原数组元素做计算,避免破坏原始输入数据,保证后续逻辑能正常使用原数据

这样修改后,用户输入任何非整数内容都会被自动忽略,程序只会处理有效的整数,而且不会因为无效输入崩溃啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:27:04