线程“main”中的异常java.lang.StringIndexOutOfBoundsException:

时间:2017-06-27 18:22:09

标签: java arrays

我收到了错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
    at java.lang.String.charAt(String.java:658)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:49)
/home/panda/.cache/netbeans/8.2/executor-snippets/run.xml:53: Java returned: 1

以下程序。这里的名字是一个字符串数组。

for (int i = 0; i < n; i++) 
{
    for (int j = i + 1; j < n; j++) 
    {
        if(names[i].charAt(1) == names[j].charAt(1))
        {
            if ((names[i].substring(2)).compareTo((names[j].substring(2)))>0)
                {
                    temp = names[i];
                    names[i] = names[j];
                    names[j] = temp;
                }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您有错误消息: https://docs.oracle.com/javase/7/docs/api/java/lang/StringIndexOutOfBoundsException.html

对于starter,A String是一个char数组。像任何其他数组一样,如果您尝试访问负索引或索引大于实际数组的大小,您将得到一个&#34; OutOfBound&#34;例外。另请注意,Array是0基索引。

对于您的特定问题,如@Kirill Ch的评论中所述,我将设置一个断点并找到您尝试访问超出范围的索引的位置。它取决于名称[]数组

中的数据

希望有所帮助