【发布时间】:2021-04-02 13:13:02
【问题描述】:
所以我正在尝试从 .txt 文件创建一个二维字符数组。第一个 while 循环计算列数和行数。第二个while循环是将字符输入到二维数组中。但是,当我创建 BufferedReader br2 并使用 readLine() 然后尝试打印它时,该行打印出“null”。为什么第二个 BufferedReader 从文件末尾开始?
public Maze(FileReader reader){
try {
BufferedReader br = new BufferedReader(reader);
cols = 0;
rows = 0;
str = br.readLine();
while (str != null) {
if (str.length() > cols) {
cols = str.length();
}
rows++;
str = br.readLine();
}
}
catch (IOException e) {
System.out.println("Error");
}
maze = new char[getNumRows()][getNumColumns()];
try {
BufferedReader br2 = new BufferedReader(reader);
line = br2.readLine();
System.out.println(line);
while ((line = br2.readLine()) != null) {
System.out.println(line);
for (int i = 0; i < getNumColumns(); i++) {
maze[row][i] = line.charAt(i);
}
row++;
}
}
catch (IOException e) {
System.out.println("Error");
}
}
这就是我从 main 中调用它的方式
public class RobotTest {
public static void main(String[] args) throws IOException{
File file = new File(args[0]);
Maze maze = new Maze(new FileReader(file));
}
}
【问题讨论】:
-
嗨@OscarTideman 这是因为您已经耗尽了底层读者。您可以在使用第一个
BufferedReader之前先mark(0),然后在第二个之前使用reset()。 -
嘿@MrR 我尝试了mark(0),然后重新设置,但没有成功。一个快速的谷歌,我找到了一个他们使用标记(26)的例子,现在它以某种方式工作!
标签: java