Java:文本文件到2D数组

时间:2014-06-09 00:01:09

标签: java java.util.scanner multidimensional-array

我需要获取一个文本文件并从该文件中的文本初始化一个二维数组。文本文件中的每一行都有20个字符。 5行。

到目前为止,我所拥有的只是

int totalRow = 5;
int totalColumn = 20
char[][] myArray = new char[totalRow][totalColumn];
File file = new File("test.txt");
Scanner scanner = new Scanner(file);

int row = 0;
int column = 0;

    while (scanner.hasNextLine()){
        while (scanner.hasNext()){
            myArray[row][column] = scanner.next();
            column++;
        }
    row++;
    }

我目前遇到的问题是我收到错误:字符串无法转换为char

另外我对扫描仪类不太熟悉,所以如果hasNextLine和hasNext不适合我想要达到的目的,请告诉我。

2 个答案:

答案 0 :(得分:1)

我将亲自使用BufferReader实例获取文本文件中每行的对象。通过使用迭代器获取每一行的实例后,可以通过以下链接将该对象转换为String和char:How to convert/parse from String to char in java?。如果你不知道该怎么做。

另外,如果nextLine为null,请确保。您想退出迭代器。您可以根据需要将这些字符串放入二维数组中。我希望这会有所帮助。

答案 1 :(得分:1)

不是最有效的解决方案,但如果不偏离原始版本,这应该做你想要的:

int totalRow = 5;
int totalColumn = 20;
char[][] myArray = new char[totalRow][totalColumn];
File file = new File("test.txt");
Scanner scanner = new Scanner(file);


for (int row = 0; scanner.hasNextLine() && row < totalRow; row++) {
    char[] chars = scanner.nextLine().toCharArray();
    for (int i = 0; i < totalColumn && i < chars.length; i++) {
        myArray[row][i] = chars[i];
    }
}

编辑:第二个想法,如果您对列宽有信心,可以进一步简化代码:

int totalRow = 5;
char[][] myArray = new char[totalRow][];
File file = new File("test.txt");
Scanner scanner = new Scanner(file);

for (int row = 0; scanner.hasNextLine() && row < totalRow; row++) {
    myArray[row] = scanner.nextLine().toCharArray();
}