gpt4 book ai didi

java - BufferedReader 如何跟踪已读取的行?

转载 作者:行者123 更新时间:2023-11-30 05:11:04 26 4
gpt4 key购买 nike

我正在从文件中读取行,并且我相信一旦我读取了所有行,我就会因为 while 循环条件而得到异常。

Exception in thread "main" java.lang.NullPointerException
at liarliar.main(liarliar.java:79)

...代码...

// read the first line of the file
iNumMembers = Integer.parseInt(br.readLine().trim());

// read file
while ((sLine = br.readLine().trim()) != null) {

// extract the name and value 'm'
String[] split = sLine.split("\\s+");
sAccuser = split[0];
iM = Integer.parseInt(split[1]);
saTheAccused = new String[iM];

for (int i = 0; i < iM; i++) {
saTheAccused[i] = br.readLine().trim();
}

// create member
// initialize name and number of members being accused
Member member = new Member();
member.setName(sAccuser);
member.setM(iM);
member.setAccused(saTheAccused);

veteranMembers.add(member);
}

内部的 for 循环必须读取几行,因此如果读取了文件的最后一行,那么 while 将尝试 readLine() 并且会失败,因为整个文件已被读取读。那么 BufferedReader readLine() 是如何工作的以及如何安全地退出 while 循环?

谢谢。

最佳答案

readLine() 在 EOF 上返回 null,并且您尝试对 null 引用调用 trim()。将调用移至循环内的 trim(),如

// read file
while ((sLine = br.readLine()) != null) {

// extract the name and value 'm'
String[] split = sLine.trim().split("\\s+");

关于java - BufferedReader 如何跟踪已读取的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com