我有一个简单的程序来读取文件。现在这条线之间有一个空白区域。我得到StringIndexOutOfBoundsException:字符串索引超出范围:0错误。请帮忙
class main{
public static void main(String args[]) {
String str;
try {
BufferedReader br = new BufferedReader ( new FileReader("train.txt"));
while((str=br.readLine())!=null){
System.out.println(str);
int a=str.charAt(0);
if(str.trim().length()==0){
System.out.println("stupid");
}
else if(a==32){
System.out.println("ddddd");
}
else if(str.charAt(0)=='A' ||str.charAt(0)=='a'){
System.out.println("hahha");
}
else if(str.charAt(0)=='C' ||str.charAt(0)=='c'){
System.out.println("lol");
}
else if(str.charAt(0)=='D' ||str.charAt(0)=='d'){
System.out.println("rofl");
}
else{
System.out.println("blank");
}
}
}
catch (FileNotFoundException e){
System.out.println(e);
}
catch (IOException e){
System.out.println(e);
}
}
答案 0 :(得分:3)
如果一行为空,则索引为0时没有字符,因为该字符串为空。您正在执行此行:
int a=str.charAt(0);
在测试线是否为空之前。有几种可能的解决方案。一种是重新组织你的代码:
if(str.trim().length()==0){
System.out.println("stupid");
continue; // so rest of loop body is skipped
}
int a=str.charAt(0);
if(a==32){
System.out.println("ddddd");
}
答案 1 :(得分:0)
下面的行会在读取空行时抛出StringIndexOutOfBoundsException
。
int a=str.charAt(0);
将其替换为:
if(str.trim().length()>0)
a=str.charAt(0);