如何解决如何在 Java 中从文本文件中读取多个网格到二维数组?
5
3
*&*&*
&*&*&
*&*&*
50
5
*&&&&&&&&*&***************&**********************&
&&********&***************&&**********************
*&&**&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&*********&&***********&***************&*********
*&&&&&******&&*********&&&**************&********&
这是我目前的代码:
public class Main {
public static char[][] grid1 = new char[5][50];
public static void readGridData (String fileName,char[][] grid) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
int columnCount = Integer.parseInt(br.readLine());
int rowCount = Integer.parseInt(br.readLine());
System.out.println(columnCount);
System.out.println(rowCount);
for (int i = 0; i < rowCount; i++) {
String line = br.readLine();
for (int j = 0; j < columnCount; j++) {
grid[i][j] = line.charat(j);
}
}
br.close();
}
/* prints the 2D array given as argument */
public static void printGrid(char[][] grid) {
int rowLength = grid.length;
int columnLength = grid[0].length;
for (int i = 0; i < rowLength; i++) {
for (int j = 0; j < columnLength; j++) {
System.out.print(grid[i][j]);
}
System.out.println();
}
System.out.println();
} // End of printGrid
public static void main(String args[]) throws IOException {
readGridData("simple.txt",grid1);
printGrid(grid1);
}
}
输出只有第一个网格,即5、3,以及网格本身。如何继续阅读整个文本文件?
稍后我会用数组计算 blob,那么有没有最好的方法来优化它?
我不能为此使用 ArrayList。非常感谢您的帮助!
解决方法
在 readGridData
方法之外声明并初始化您的缓冲区,然后向其传递一个参数。在这种情况下,您将能够继续阅读。
我什至会用 Scanner
代替:
public static char[][] readGridData(Scanner scanner) {
int columnCount = scanner.nextInt();
int rowCount = scanner.nextInt();
System.out.println(columnCount);
System.out.println(rowCount);
char[][] grid = new char[rowCount][columnCount]
for (int i = 0; i < rowCount; i++) {
String line = scanner.nextLine();
for (int j = 0; j < columnCount; j++) {
grid[i][j] = line.charAt(j);
}
}
return grid;
}
然后:
public static void main(String args[]) throws IOException {
try (Scanner scanner = new Scanner("simple.txt")) {
while (scanner.hasNextInt()) {
char[][] grid = readGridData(scanner);
printGrid(grid);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。