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)
谢谢你的帮助。我确信这是一个简单的错误,但我只是没有看到它。
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)