Java中将文本文件数据存入二维数组的实现方法求助
解决文本文件数据存入二维数组的问题
嘿,我来帮你搞定这个把调查结果存入二维数组的问题!首先得明确你的文本文件里每行数据的分隔规则(比如逗号、空格还是制表符),这是拆分每行元素的关键。下面我会基于每行用逗号分隔数据的常见场景给出方案,你可以根据实际情况调整分隔符。
思路拆解
Java的数组是固定长度的,我们没法一开始就确定二维数组的大小,所以可以先通过List动态存储每行的数据,最后再把List转换成二维数组。具体步骤是:
- 读取文件所有行,先存入
List<String>,拿到总行数 - 对每行数据进行拆分,把每行元素存入
List<List<String>>(如果是数字类型,可换成Integer/Double等) - 最后把嵌套
List转换成对应的二维数组
完整代码示例
import java.io.*; import java.util.ArrayList; import java.util.List; class Final { public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\loren\\Desktop\\t\\respuestas.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); String st; // 用来存储所有行拆分后的动态数据 List<List<String>> dataList = new ArrayList<>(); while ((st = br.readLine()) != null) { // 这里假设每行用逗号分隔,实际是空格就换成"\\s+",制表符用"\\t" String[] rowElements = st.split(","); List<String> rowList = new ArrayList<>(); for (String element : rowElements) { // 如果是数字,可在这里转成Integer/Double,比如 Integer.parseInt(element.trim()) rowList.add(element.trim()); // 去除元素前后多余空格 } dataList.add(rowList); } br.close(); // 记得关闭IO流 // 把动态List转换成固定长度的二维数组 int rows = dataList.size(); if (rows == 0) { System.out.println("文件里没有数据哦"); return; } int cols = dataList.get(0).size(); String[][] twoDArray = new String[rows][cols]; for (int i = 0; i < rows; i++) { List<String> row = dataList.get(i); twoDArray[i] = row.toArray(new String[cols]); } // 测试输出二维数组 System.out.println("转换后的二维数组:"); for (String[] row : twoDArray) { for (String element : row) { System.out.print(element + "\t"); } System.out.println(); } } }
额外说明
- 如果你的数据是数字类型,只需把
List<String>换成List<Integer>(或Double),拆分后用Integer.parseInt(element.trim())转换,二维数组对应换成int[][]或double[][]。 - 如果每行元素数量不一致,二维数组处理起来会比较麻烦(Java二维数组每行长度可不同,但灵活性差),建议直接用
List<List<String>>存储会更方便。 - 实际项目中建议用
try-catch块捕获IOException,避免因文件不存在、读取失败等情况导致程序崩溃。
内容的提问来源于stack exchange,提问作者Mich Pena
相关产品推荐
相关产品推荐

