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

如何编写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:54:00