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

如何在无流控制语句下实现输入值范围校验并抛出异常?

问题描述

需要编写Java程序,支持同时输入两个整数,要求值范围在50-127之间;若值小于50或大于127,需抛出异常提示“输入的值过低或过高”,且不能使用流控制语句(如if、else、while等)。

更新1:已实现127上限校验,尝试用next(Pattern)实现下限校验,已联系老师确认要求。
更新2:确认仅需满足127的上限校验即可!

解决方案

针对需求,提供两种符合要求的实现方案,核心是避免使用流控制语句完成校验:

方案1:使用断言实现校验(无流控制)

断言语句不属于流控制语句,可直接完成范围校验,不满足条件时自动抛出异常:

import java.util.Scanner;

public class A1_Q1 {

    public static void main(String[] args) {
        int p, q;
        Scanner kBoard = new Scanner(System.in);

        System.out.println("Welcome to the Simple 3D-Space Program:");
        System.out.println("+++++++++++++++++++++++++++++++++++++++");
        System.out.print("Enter values for 'p' and 'q' simultaneously. Must be ≤ 127:");

        // 直接读取两个整数,自动处理输入分隔符,避免手动分割字符串的错误
        p = kBoard.nextInt();
        q = kBoard.nextInt();

        // 断言校验:不满足条件时抛出AssertionError,携带指定提示
        assert p <= 127 && q <= 127 : "输入的值过低或过高";

        // 输出验证结果
        System.out.println("输入的有效值:" + p + " " + q);
    }
}

注意事项

  • Java默认关闭断言功能,运行程序时需添加VM参数-ea启用断言,例如:
    java -ea A1_Q1
    

方案2:利用异常表达式实现(无需VM参数)

若要求无需额外参数即可触发异常,可通过静态方法结合Java 14+的表达式特性实现(无流控制语句):

import java.util.Scanner;

public class A1_Q1 {

    // 校验方法:无流控制语句,通过三元表达式触发异常
    private static int checkUpperLimit(int num) {
        return num <= 127 ? num : throw new IllegalArgumentException("输入的值过低或过高");
    }

    public static void main(String[] args) {
        int p, q;
        Scanner kBoard = new Scanner(System.in);

        System.out.println("Welcome to the Simple 3D-Space Program:");
        System.out.println("+++++++++++++++++++++++++++++++++++++++");
        System.out.print("Enter values for 'p' and 'q' simultaneously. Must be ≤ 127:");

        p = checkUpperLimit(kBoard.nextInt());
        q = checkUpperLimit(kBoard.nextInt());

        System.out.println("输入的有效值:" + p + " " + q);
    }
}
原代码问题优化

原代码手动分割输入字符串的方式存在潜在问题:

  • 若输入包含多空格、前后空格或非数字字符,会导致分割错误或转换失败
  • 替换为Scanner.nextInt()可自动处理各种合法输入格式,提升程序健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:01:52