Java:文本文件到二维数组

Posted

技术标签:

【中文标题】Java:文本文件到二维数组【英文标题】:Java: Text file to 2D array 【发布时间】:2014-07-29 12:16:14 【问题描述】:

我需要获取一个文本文件并从该文件中的文本初始化一个二维数组。文本文件中的每一行有 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++;
    

我现在遇到的问题是我收到错误:字符串无法转换为字符

另外我对扫描器类不是很熟悉,所以如果 hasNextLine 和 hasNext 不适合我想要实现的目标,请告诉我。

【问题讨论】:

mattgemmell.com/what-have-you-tried 继续吧。写更多的代码。如果您遇到特定问题 - 请返回确切的问题。 很公平,我将编辑我的主要帖子 @PM 77-1 我已经用我当前的循环更新了这个问题。 scanner.next() 返回一个String。您仍然需要提取单个字符。 【参考方案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();

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Java:文本文件到二维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何从文本文件创建二维数组并在 c 中打印到新文件

如何将二维数组写入文本文件?

如何从文本文件中获取值并输入到二维数组中? C++

VBA批量导入文本文件,如何转换二维数组?

如何从 .t​​xt 中提取文本并将其存储到动态二维数组中?

用python处理csv文件,最好可以将里面的文本信息转成一个二维数组的形式,具体如下