java.lang.ArrayIndexOutOfBoundsException:10

时间:2014-06-13 08:32:14

标签: java

我无法弄清楚问题是有人请帮帮忙。该程序应该找到数组中重复值的索引并打印出来。输出java.lang.ArrayIndexOutOfBoundsException:10。

private static String s = "";
private static int num = 0;

public static void main(String[] args) {
    int[] array = { 1, 5, 3, 8, 2, 3, 7, 1, 9, 3 };
    for (int i = 1; i <= array.length; ++i) {
        while (num <= array.length - 2 && array[num] == array[i]) {
            s += i + ","; 
            num += 1;
        }
    }
    System.out.println("index 0 are at positions" +s);
    System.out.println();
}

4 个答案:

答案 0 :(得分:5)

for (int i= 0; i<array.length; ++i) {
    while (num <=array.length-2 && array[num]==array[i]) {
        s += i+ ","; 
        num += 1;
    }
}

这对你有用。数组的长度为10,因此最后一个索引为9,而不是10!从0开始!

答案 1 :(得分:4)

array.length10,但数组中的最后一个索引是9,因为数组索引从0开始。

如果要遍历整个数组,for循环中的停止条件应为i<=array.length-1

答案 2 :(得分:1)

首先,你应该从0而不是索引1开始。其次你应该使用&lt;登录

for (int i = 0; i < array.length; ++i)

答案 3 :(得分:0)

仅将最大元素数设置为10,这意味着索引号将从0开始。

您只能在9元素之前获取元素。

java.lang.ArrayIndexOutOfBoundsException: 10

很明显,你没有11元素。

for (int i = 1; i < array.length; ++i) {
    while (num <= array.length - 2 && array[num] == array[i]) {
        s += i + ","; 
        num += 1;
    }
}

这可以帮到你。