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

长度为5的固定数组如何读取文件中最多5个数字避免索引越界

问题原因

你触发数组越界的核心原因是:当文件内数值总数大于数组长度(5)时,for循环的迭代次数等于文件总数值数,会访问到store[5]及以后的下标,而长度为5的数组最大合法下标仅为4。同时你现在两次读取文件的逻辑属于冗余操作,可以优化为单次读取。

修正后实现代码

System.out.println("Input the file name");
names = ff.nextLine();
// 提前初始化长度为5的存储数组
int[] store = new int[5];
int count = 0; // 记录已存入的数值数量

try {
    File f = new File(names);
    Scanner inputFile = new Scanner(f);
    // 循环终止条件:文件无更多数值 或 已存入5个数值
    while (inputFile.hasNextInt() && count < store.length) {
        store[count] = inputFile.nextInt();
        count++;
    }
    inputFile.close();
} catch (IOException e) {
    System.out.println("The file is not exist");
}

实现说明

  • 无需提前统计文件内的数值总数,仅需单次读取文件即可完成存入操作,性能更优
  • 天然兼容文件数值不足5个的场景,有多少个就存多少个,不会出现空读问题
  • 循环最多执行5次,不会访问超过数组长度的下标,彻底避免越界异常
  • 符合需求要求:最多仅存入5个数值,不需要输出到屏幕

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:30:01