Java中给定取值范围时如何校验输入数组的元素合法性
核心问题说明
- 数组初始化错误:使用
IntStream.rangeClosed(1, 99).toArray()生成的数组固定长度为99,既会导致输入size大于99时触发数组越界,也会在size小于99时,计算平均值把未手动输入的默认值纳入统计,结果不符合预期 - 缺少输入校验逻辑,未对输入的元素值做范围判断
- 平均值计算使用整数除法,会丢失小数精度
修正方案
在读取每个数组元素的位置增加循环校验:输入值不符合0 < 值 < 100的要求时,输出指定提示并要求重新输入,直到拿到合法值再写入数组。同时修正数组初始化和平均值计算逻辑。
完整可运行代码
package arrays; import java.util.Scanner; public class ArrayAssignment { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("输入数组大小: "); int size = s.nextInt(); // 修正数组初始化:按输入的size创建对应长度的空数组 int[] array = new int[size]; System.out.println("输入数组元素: "); for (int i = 0; i < size; i++) { int value; // 循环校验输入合法性 while (true) { value = s.nextInt(); if (value > 0 && value < 100) { break; } System.out.println("请输入仅>0且<100的值"); } array[i] = value; } int sum = 0; for (int j : array) { sum += j; } // 修正平均值计算:先转double再做除法,保留小数精度 double average = (double) sum / size; System.out.println("数组平均值: " + average); s.close(); } }
运行效果示例
输入数组大小: 3 输入数组元素: 101 请输入仅>0且<100的值 -5 请输入仅>0且<100的值 20 30 40 数组平均值: 30.0
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

