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
相关产品推荐
相关产品推荐

