0

我一遍又一遍地查看了这段代码,看不到这是在哪里发生的,并不是每次都发生这种情况,只有当我通过帖子两次时才会发生这种情况,但我尝试通过将它们注释掉来依次摆脱它们​​和这仍然会给出错误,但是如果我摆脱了我的两个代码都可以正常工作,但是它们是必要的,并且它们之前确实可以工作。任何帮助表示赞赏。

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";
    }
}
4

5 回答 5

4

您的代码未检查

  • 存在lines[i+1]的,
  • 存在lines[i-1]的,并且
  • 的长度lines[i+1]至少为五。

这将在i为零或lines.length-1时中断,或者当前/下一行之一少于五个字符时。

于 2012-12-13T15:09:47.600 回答
2

in lines[i+1].charAt(4): 如果lines[i+1]少于 5 个字符怎么办?

于 2012-12-13T15:09:04.887 回答
1

您只测试了 的长度lines[i],而您正在访问lines[i+1].charAt(4),如果它的长度小于 5,这可能会给您带来这个问题。

于 2012-12-13T15:09:25.573 回答
1

在使用它们之前检查所有变量的长度。你改变了索引,但你不做必要的检查(空、长度和数组索引检查)。

特别是在访问时:

lines[i+1]

lines[i-1]
于 2012-12-13T15:10:10.037 回答
0

我们确定 +1 和 -1 行在 10 个字符范围内吗?

于 2012-12-13T15:09:55.117 回答