java - “String.substring(int,int)行:不可用”导致错误
问题描述
不知何故,我的 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();
}
}
}
解决方案
您可能还想检查空字符串:
if( !line.trim().isEmpty() && (line.substring(0,1).equals("T") || line.substring(0,1).equals("G"))) { ... }
然后,您可能还想重构代码以使其更具可读性:
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(shouldConsider(line)) {
System.out.println(line);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private boolean shouldConsider(String line){
return !line.trim().isEmpty()
&&
(line.substring(0,1).equals("T") || line.substring(0,1).equals("G"));
}
推荐阅读
- c - 当数组未完全填充时,内存中分配了什么?( C )
- python - 如何修复“xcor() 缺少 1 个必需的位置参数:Python 中的‘self’错误
- javascript - 表单第二部分中未定义的对象
- python - 有一种方法可以在 VS Code 上启用一条视觉线来显示 PEP8 的限制?
- zurb-foundation - 如何使显示高度小于移动设备上的视口?
- php - MySQL PDO dbname 在 MySQL 升级后停止工作
- vba - 如何添加条件以检查主题行是否不包含某些文本并且收件人是否在组织之外?
- redux - 应用程序在首次运行时无法加载。(不能将 undefined 或 null 转换为对象)
- docker - 我的应用程序在使用 docker-compose up 时无法发现 mongodb,链接不起作用?
- css - 如何修复悬停时背景图像的 CSS 过渡?