java - 如何将文件读入二维数组,无论它们在 java 中是空格还是换行符分隔?

标签 java arrays multidimensional-array

我有一些由整数组成的输入文件。其中一些输入文件的编号按一行组织,并用空格分隔。

1 2 3 4 5 6...

其他内容按换行符组织。

1 2 3 4 5 6 ...

我想要做的是读取该文件目录中的每个文件,并将每个文件存储在一个可以对它们进行排序的二维数组中。在此示例代码中,fileArr 是文件数组,其中包含相关目录中的所有文件。 nums 是我试图存储它的二维数组,第一个括号 (nums[]) 代表文件,第二个数组 (nums[ ][]) 代表在其中找到的数据。 line 是一个字符串数组。下面的代码是我最接近让它工作的代码。当数据全部存储在一行中时,代码可以工作,如第一个示例所示,但在第二个示例中,每个单独的行都会生成一个单元素数组 line ,其中该行的编号为它,使得 nums[i][q] 最终仅成为一个元素。

    // Below is a code that reads all of the raw data into a 2D array
    int[][] nums = new int[fileArr.length][];
    for (int i = 0; i < fileArr.length; i++) {
        fileRead = new Scanner(new BufferedReader(new FileReader(fileArr[i])));

        while (fileRead.hasNextLine() != false) {
            line = fileRead.nextLine().trim().split("\\s+");
        }
        nums[i] = new int[line.length];
        for (int q = 0; q < line.length; q++) {
            nums[i][q] = Integer.parseInt(line[q]);
        }
    }
    // end block

我希望我解释得很好。基本上,我只是能够将文件中的数据存储在二维数组中,无论这些数字是垂直存储(换行符)还是水平存储(空格)。

最佳答案

只需使用 next() 而不是 nextLine() - 这是一个示例应用程序,它打印由任何空格分隔的所有“单词”,无论是空格还是换行符输入:

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
  public static void main(String[] args) {
    Scanner in = new Scanner(new BufferedReader(
          new InputStreamReader (System.in)));
    for(;;) {
      System.out.println(in.next());
    }
  }
}

关于java - 如何将文件读入二维数组,无论它们在 java 中是空格还是换行符分隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53543443/

相关文章:

javascript - 无限多维数组,其中一个值被覆盖

java - DatagramSocket发送方法是异步的?

java - 加密和解密字符串

java - 正则表达式数字范围

ruby-on-rails - 排列现有数组以播种 Rails 数据库

php - 如何获得将第二个数组的元素作为参数对数组的所有元素应用操作的结果数组?

javascript - Array.prototype.slice.call 在 getElementsByClassName 的重新创建中如何工作?

arrays - J:具有特定值的坐标

c++ - 如何在 C++ 中写入二维数组?

java - 在 GWT 中循环生成 Hyperlink/HTML/'Please suggest'?