当前位置: 首页 > 知识库问答 >
问题:

StringIndexOutOfBoundsException:读取文件[duplicate]时字符串索引超出范围:0

谷涵容
2023-03-14

我有一个读取文件的简单程序。现在线之间有一个空白。我得到的StringIndexOutOfBoundsExc0019:字符串索引超出范围: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);
}
    }

共有2个答案

东方俊明
2023-03-14

下面的行在读取空行时将抛出StringIndexOutOfBoundsException

int a=str.charAt(0);

替换为:

if(str.trim().length()>0)
a=str.charAt(0);
赫连靖琪
2023-03-14

如果一行为空,则索引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");
}
 类似资料:
  • 问题内容: 我正在编写一个打开文本文件并检查注释的程序。然后,它解析注释以检查某些单词。 错误im出现在以下while循环中,该循环检查是否当前行以空格或除’/’以外的其他字符开头,如果那里存在非反斜杠字符,则while循环移至下一行并检查再次。一旦while循环满足其要求并中断程序崩溃,我将收到以下输出错误。 这是有问题的代码示例 谢谢你的帮助。我确定这是一个简单的错误,但我只是看不到它。 问题

  • 我正在编写一个打开文本文件并检查注释的程序。然后它解析注释以检查某些单词。 im出现的错误是以下while循环检查当前行是否以空白或“/”以外的任何字符开头(如果存在非反斜杠字符),然后while循环移到下一行并再次检查。一旦while循环满足其要求并爆发,程序就会崩溃,我会得到以下输出错误。 下面是有问题的代码示例 谢谢你的帮助。我肯定这是一个简单的错误,但我就是没看到。

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 问题内容: 嗨,我编写了Java代码来查找由其他单词组成的最长单词。我的逻辑是从文本文件中读取单词列表,并将每个单词添加到一个数组中(在文本中,单词被排序,并且每行中只有一个单词)之后,我们检查数组中的每个元素是否具有其他元素作为子字符串。如果是这样,我们计算子字符串的数量。具有最大子串数的元素将是结果 当我给一个只有两个单词的文本文件时,代码正在运行。但是,当有两个以上的单词时,我将出现以下错误

  • 问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd

  • 问题内容: 从类中调用函数时出现以下错误:java.lang.StringIndexOutOfBoundsException:超出范围的字符串索引:-1尽管我使用系统打印来查看输入的内容,但仍在substring()函数中进行传递似乎是正确的。函数isContained()返回一个布尔值,该值定义作为参数传递的子字符串是否在单词列表中。我的代码是: 其中size是我在函数中传递的字符串(str)的