我已经遍历了这段代码并且无法看到这种情况发生在每次只有在我经过两次邮件的情况下才会发生这种情况但是我已经尝试通过评论来依次删除这些他们出来,仍然给出错误,但如果我摆脱我的代码工作正常,但他们是必要的,他们之前工作。任何帮助表示赞赏。
if(lines[i].length() > 10)
{
if(lines[i].charAt(4) == '-' && lines[i+1].charAt(4) == '-')
{
lines[i] = "\nComment";
}
}
if(lines[i].length() > 10)
{
if(lines[i].charAt(4) == '-' && lines[i+1].charAt(4) != '-' && !lines[i-1].equals("\nComment"))
{
lines[i] = "\nPost";
}
}
答案 0 :(得分:4)
您的代码未检查
lines[i+1]
存在,lines[i-1]
存在,lines[i+1]
的长度至少为五。当i
为零或lines.length-1
时,或当前一行/下一行中的一行少于五个字符时,这会中断。
答案 1 :(得分:2)
lines[i+1].charAt(4)
中的:如果lines[i+1]
少于5个字符会怎么样?
答案 2 :(得分:1)
您只测试了lines[i]
的长度,而您正在访问lines[i+1].charAt(4)
,如果长度小于5,则可能会出现问题。
答案 3 :(得分:1)
在使用之前检查所有变量的长度。您可以改变索引但不进行必要的检查(空值,长度和数组索引检查)。
特别是在访问时:
lines[i+1]
和
lines[i-1]
答案 4 :(得分:0)
我们确定第+1和第1行是在10个字符范围内吗?