StringIndexOutOfBoundsException 字符串索引超出范围:0

Joh*_*ark 3 java string exception

我正在编写一个打开文本文件并检查注释的程序。然后它解析评论以检查某些单词。

我遇到的错误是以下 while 循环,该循环检查当前行是否以空格或“/”以外的任何字符开头(如果存在非反斜杠字符),然后 while 循环移动到下一行并检查再次。一旦 while 循环满足其要求并中断程序崩溃,我会收到以下输出错误。

import java.rmi.Naming;
import java.net.InetAddress;
i
import java.lang.reflect.*;
i
ERROR: String index out of range: 0 
at java.lang.String.charAt(Unknown Source) 
at ExtraCredit.main(ExtraCredit.java:22)</code></pre> 
Run Code Online (Sandbox Code Playgroud)

这是有问题的代码示例

System.out.println(line);
char x = line.charAt(0);
while((line.charAt(0)!='/')&&(Character.isWhitespace(x)==false))
{
    line = inputFile.nextLine();
    x = line.charAt(0);
    System.out.println(line);
    System.out.println(x);
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。我确信这是一个简单的错误,但我只是没有看到它。

jh3*_*314 5

line当为空时(例如) ,就会出现问题""。那么它在索引 0 处没有字符,因此会出现错误。

line要修复此问题,您可以在使用之前检查 的长度charAt

System.out.println(line);
char x;
if (line.length() < 1) {
   System.out.println("next line is empty");
} else {
    x = line.charAt(0);

    while((line.charAt(0)!='/')&&(Character.isWhitespace(x)==false))
    {
       line = inputFile.nextLine();
       if (line.length() < 1) {
          System.out.println("next line is empty");
          break;
       }
       x = line.charAt(0);
       System.out.println(line);
       System.out.println(x);
    }
}
Run Code Online (Sandbox Code Playgroud)