我有一些由整数组成的输入文件。其中一些输入文件的编号按一行组织,并用空格分隔。
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/