我无法弄清楚问题是有人请帮帮忙。该程序应该找到数组中重复值的索引并打印出来。输出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();
}
答案 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.length
是10
,但数组中的最后一个索引是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;
}
}
这可以帮到你。