java - 将 .txt 文件的每一行分配给多维数组中的一个单元格

标签 java arrays parsing multidimensional-array

我有一个包含 1302 行的 .txt 文件,均匀划分为 14 x 93(对应于 14 列和 93 行)。我想将 1302 行解析为 [93][14] 多维数组。我有以下脚本遍历每个单独的“单元格”,但对于文件解析,我有一些问题。

        int rows = 93;
        int columns = 14;
        int i;
        int j;
        int count = 0;

        String[][] array = new String[rows][columns];
        for(i = 0; i < rows; i++){
            for(j = 0; j < columns; j++){
                System.out.println(i + "," + j);
                count++;
            }
        }

如何将文本文件的每一“行”分配到每个单元格中?

最佳答案

我的建议(除了将 double[][] 更改为 List<List<Double>> 之类的东西之外)是按如下方式浏览每个文本行:

InputStream    fis;
BufferedReader br;
String         line;

fis = new FileInputStream("the_file_name");
br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));
while ((line = br.readLine()) != null) {
    // Deal with the line
}

// Done with the file
br.close();
br = null;
fis = null;

有了这个,您应该能够获取文件的每个单独的“行”。我上面提到的原因是使用 List<List<Double>>而不是double[][]是因为你从中得到两件事:

1) 动态调整大小。即使您知道尺寸并希望为该列表提供默认尺寸以帮助提高性能,您也不受该尺寸的限制,这值得它的重量……失败吗?程序员黄金。

2) 使用原始 double(小写 d)而不是 Java 对象 Double(大写 D)确实会杀了你,因为无法访问 Double(大写 D 对象)中内置的很多很棒的方法和可用性。有关于此的更多说明,请参阅:Double vs. double

另请注意,上面的代码没有错误检查,因此您需要在其中构建一些错误检查,这是一个非常基本的实现。

编辑::

好吧,所以在您发布的代码中:code snipped readLine() 内部有一个双 for 循环环形。像这样:

while ((line = br.readLine()) != null) {
    for (int i = 0; i < rows; i++){
        for(int j = 0; j< columns; j++){
            line = array[i][j];
         }
     }   
}

现在,这有两个问题:

1) 您将 LINE 设置为等于 array[i][j] 的内容,这没有任何意义,因为 array 只是一个空的二维数组。

2) 对于文本文件中的每一行,您将循环 1302 次(然后还会循环更多,因为您正在执行 (1302 * 列) * 1302

上面这段代码的真正作用是处理你的“行”循环。所以,不要做你正在做的事情,只需做:

int i = 0;
while ((line = br.readLine()) != null) {
    array[i][0] = line;
    i++
}

这将用文件中的所有字符串填充您的数组。

关于java - 将 .txt 文件的每一行分配给多维数组中的一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20150437/

相关文章:

java - 如何从 XML 中提取一个 boolean 字段?

java - 需要建议 : A programmatic way for creating vector graphics with heavy usage of text

java - 如何从 "int a, b, c = 0, d;"中提取子字符串(变量名称)

ios - Afnetworking 延迟响应

php - 在 Laravel 中仅返回值(无键/关联数组)

r - R 中的 URL/URI 编码

java - 如何根据不同组合框的所选项目更改组合框选项

Java-替换字符串中的特殊字符

比较数组内的数字

javascript - 将字符串中的字符替换为 HTML 元素