Java方法CharAt在与#比较时崩溃

时间:2018-09-15 15:18:58

标签: java string indexoutofboundsexception charat

所以我要做的是查看文本文件中字符串是否以#开头。 但是,当我将charAt(0)#进行比较时,会出现错误。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at StringTranslator.main(StringTranslator.java:63)

代码本身看起来像这样(做所有比较的部分)

String line;
line = br.readLine())
if(line.charAt(0) == '#')
{
    // this is a comment line ignore it
    writer.println(line);

}

有人建议如何得出结论并使其识别#符号吗?先感谢您! 注意:我同时在记事本中写入文件和代码中读取文件时都使用UTF-8 encoding

4 个答案:

答案 0 :(得分:4)

这与octothorpe无关,而是您正在读取一个空字符串。

如果要检查行是否以#开头,请处理空字符串,请使用:

line.startsWith("#")

答案 1 :(得分:0)

崩溃与#无关。您正在尝试评估空字符串中的第一个字符。访问字符串之前,应先验证字符串是否为空:

if (line.length() > 0 && line.charAt(0) == '#')

答案 2 :(得分:0)

错误“字符串索引超出范围:0”表示您的字符串不包含任何字符,即空字符串。

答案 3 :(得分:0)

您需要检查字符串是否为空或不为null,然后检查索引0处的字符是什么

if (!StringUtils.isEmpty(line) && line.startsWith("#")) {
    // do something
}