如何编写if条件语句校验输入仅允许数字,非数字输入时触发错误提示?
Java 数组长度输入校验实现方案
实现逻辑说明
- 核心校验依赖
Scanner类的内置能力判断输入是否为整数,避免非法输入直接抛出程序异常终止运行 - 非数字输入场景下必须先清空
Scanner缓存的非法内容,否则会进入死循环 - 额外补充数组长度合法性校验:仅允许输入大于0的正整数
方案1:使用hasNextInt()提前校验(推荐)
无需捕获异常,逻辑更直观:
import java.util.Scanner; public class ArrayInputTest { public static void main(String[] args) { Scanner input = new Scanner(System.in); int length = 0; boolean inputValid = false; while (!inputValid) { System.out.print("Determine the length of array> "); if (input.hasNextInt()) { length = input.nextInt(); if (length > 0) { inputValid = true; } else { System.out.println("错误:数组长度必须为正整数,请重新输入"); } } else { System.out.println("错误:输入内容不是合法数字,请重新输入"); // 清空缓存的非法输入 input.next(); } } // 校验完成,可正常使用length创建数组 int[] array = new int[length]; System.out.println("成功创建长度为" + length + "的数组"); input.close(); } }
方案2:捕获InputMismatchException异常处理
适合需要统一处理输入异常的场景:
import java.util.Scanner; import java.util.InputMismatchException; public class ArrayInputTest { public static void main(String[] args) { Scanner input = new Scanner(System.in); int length = 0; boolean inputValid = false; while (!inputValid) { System.out.print("Determine the length of array> "); try { length = input.nextInt(); if (length > 0) { inputValid = true; } else { System.out.println("错误:数组长度必须为正整数,请重新输入"); } } catch (InputMismatchException e) { System.out.println("错误:输入内容不是合法数字,请重新输入"); // 清空缓存的非法输入 input.next(); } } // 校验完成,可正常使用length创建数组 int[] array = new int[length]; System.out.println("成功创建长度为" + length + "的数组"); input.close(); } }
注意:如果不需要输入错误后重新尝试,去掉外层while循环即可,校验不通过直接终止程序即可。
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

