Java作业求助:如何实现1-100整数输入的范围校验?
Java整数输入范围校验优化建议
针对「无法阻止超范围输入」的解决思路
- 不要直接一次性读取输入值,改用循环校验输入:每次读取后立即检查数值是否在1-100区间内,若不符合则重复提示用户输入,直到拿到合法数值。可以把这个输入校验逻辑抽成独立的复用方法,避免两次输入写重复代码。
- 额外补充:如果需要处理非整数输入(比如用户输入字母),可以在读取前用
scan.hasNextInt()判断输入是否为整数,避免抛出输入不匹配异常。
针对「输入错误后无法立即提示」的优化方向
- 调整
computeProduct的校验逻辑:当前方法即便检测到非法值,依然会计算并返回乘积,不符合需求。应该在方法内先完成两个参数的范围校验——只要有一个数值不在范围内,就输出指定提示语Number is not in range, please try again.,并且不需要返回有效乘积(可以考虑将方法返回类型改为Integer支持空值,或者抛出异常让调用方处理,也可以直接终止程序)。 - 修正当前的条件判断逻辑:不要用
else if,因为两个数值都可能超出范围,应该分别检查每个参数的合法性,确保所有非法情况都能被及时检测并提示。
你的现有代码
public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Please Key in integers only in the range between 1 to 100."); System.out.println("Please key in your first Integer: "); int a = scan.nextInt(); System.out.println("Please key in your second Integer: "); int b = scan.nextInt(); int totaloutput = computeProduct(a, b); System.out.println(totaloutput); } public static int computeProduct(int num1, int num2) { if (num1 < 1 || num1 > 100) { System.out.println("invalid range"); } else if (num2 < 1 || num2 > 100) { System.out.println("invalid range"); } int total = num1 * num2; return total; } }
内容的提问来源于stack exchange,提问作者JKoriginals
相关产品推荐
相关产品推荐

