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

如何将TXT文档中的数值存入Java数组?已尝试方案均无效

我来帮你搞定这个问题!从你贴的代码片段来看,应该是卡在了「没正确初始化数组长度」,还有可能打错了变量名(比如你写的in...估计是input的笔误)。下面给你两个靠谱的解决方案,一步步来:

方案一:先统计个数再初始化数组(适合确定文件全是整数的场景)

这种方式需要先遍历一遍文件统计整数数量,再初始化对应长度的数组,然后重新读取文件把数值存进去:

import java.util.Scanner; 
import java.io.File; 
import java.io.IOException;

public class example{ 
    public static void main(String[] args) throws IOException{ 
        // 第一步:统计文件里的整数个数
        Scanner countScanner = new Scanner(new File("integers.txt")); 
        int count = 0; 
        // 用hasNextInt()更精准,只识别整数,避免非整数内容干扰
        while(countScanner.hasNextInt()){ 
            countScanner.nextInt(); 
            count++; 
        }
        countScanner.close(); // 用完记得关闭资源,避免泄漏

        // 第二步:初始化对应长度的数组,再读取数据存入
        int[] numbersArray = new int[count]; 
        Scanner dataScanner = new Scanner(new File("integers.txt")); 
        int index = 0; 
        while(dataScanner.hasNextInt()){ 
            numbersArray[index] = dataScanner.nextInt(); 
            index++; 
        }
        dataScanner.close();

        // 现在就可以用数组做求和、求平均啦
        // 示例:计算总和
        int sum = 0; 
        for(int num : numbersArray){ 
            sum += num; 
        }
        // 示例:计算平均值(转成double避免整数除法的精度丢失)
        double average = (double) sum / count; 

        // 输出结果验证
        System.out.println("数组中的元素:");
        for(int num : numbersArray){
            System.out.print(num + " ");
        }
        System.out.println("\n总和:" + sum);
        System.out.println("平均值:" + average);
    } 
}
方案二:用动态集合ArrayList(更灵活,不用提前统计个数)

如果不确定文件里有多少个整数,或者不想两次读取文件,可以用ArrayList动态存储元素,之后再转成数组(如果需要的话):

import java.util.ArrayList;
import java.util.Scanner; 
import java.io.File; 
import java.io.IOException;

public class example{ 
    public static void main(String[] args) throws IOException{ 
        ArrayList<Integer> numList = new ArrayList<>(); 
        Scanner input = new Scanner(new File("integers.txt")); 

        // 直接把读取到的整数添加到集合里
        while(input.hasNextInt()){ 
            numList.add(input.nextInt()); 
        }
        input.close();

        // 如果需要转成int数组的话
        int[] numbersArray = new int[numList.size()];
        for(int i=0; i<numList.size(); i++){
            numbersArray[i] = numList.get(i);
        }

        // 求和、求平均操作和之前一致
        int sum = 0; 
        for(int num : numbersArray){ 
            sum += num; 
        }
        double average = (double) sum / numList.size(); 

        System.out.println("总和:" + sum);
        System.out.println("平均值:" + average);
    } 
}

关键注意点

  • 尽量用hasNextInt()代替hasNext(),这样可以过滤掉文件里的非整数内容,避免报错
  • 用完Scanner一定要调用close()关闭资源
  • 计算平均值时要把总和转成double,不然整数除法会直接舍去小数部分,导致结果不准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:52:47