【发布时间】:2021-09-23 10:57:21
【问题描述】:
不知何故,我的 if 循环使用子字符串检查 .txt 文件会导致问题。没有 if 循环,一切正常。但是有了它,文本文件中的空行似乎导致它崩溃。它一直工作到文件中的第一个空行,然后我收到此错误。我该怎么办?
代码:
public class S1_Blockchain extends ConsoleProgram {
public void init() {
setSize(400, 250);
setFont("Arial-bold-18");
BufferedReader br = null;
String line;
try {
br = new BufferedReader(new FileReader("block_chain.txt"));
while((line = br.readLine()) != null){
if(line.substring(0,1).equals("T") || line.substring(0,1).equals("G")) {
System.out.println(line);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
【问题讨论】:
-
line.startsWith("T")是检查字符串是否以 T 开头的更好方法。它避免了创建不必要的子字符串,但也处理了空的情况,并且更能表达意图。跨度> -
似乎没有人告诉你原来的问题是什么。空行没有字符(readline 删除了行终止符)。您的子字符串调用正在提取第一个字符 - 它不存在。
标签: java substring bufferedreader