我需要取一个文本文件,并从该文件中的文本初始化一个2d数组。文本文件中的每行有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不适合我想要实现的目标,请让我知道。
这不是最有效的解决方案,但没有偏离原始版本太多,这应该是您想要的:
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];
}
}
EDIT:再考虑一下,如果您对列宽度有信心,可以进一步简化代码:
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();
}
我个人将使用BufferReader实例来获取文本文件中每行的对象。在使用迭代器获得每行的实例后,您可以通过以下链接将该对象转换为String和char:如何在java中从String转换/解析为char ?如果你还不知道怎么做,
另外,请确保nextLine是否为空。你想退出迭代器。您可以将这些字符放入您希望的二维数组中。