你好,我是编程的新手,目前我的任务是创建一个与排序相关的程序。我一直收到错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at sorting.Sorting.main(Sorting.java:17)
Java Result: 1
它告诉的行是错误是第17行,其中包含:
if (ArrayOfInts[j] > ArrayOfInts[j + 1])
请帮助..继承人。
public class Sorting{
public static void main(String[] args){
int[] ArrayOfInts = {42, 97, 3, 689, 14, 1076, 3000, 8, 632, 327, 976, 4215};
for(int i = ArrayOfInts.length; i >= 1; i--){
for(int j = 0; j < i; j--){
if (ArrayOfInts[j] > ArrayOfInts[j + 1]){
int temp = ArrayOfInts[j];
ArrayOfInts[j] = ArrayOfInts[j + 1];
ArrayOfInts[j - 1] = temp;
}
}
}
for(int i = 0; i < ArrayOfInts.length; i++){
System.out.println(ArrayOfInts[i] + " ");
}
}
}
答案 0 :(得分:2)
当j=0
时,这一行存在问题:
ArrayOfInts[j - 1] = temp;
当你尝试访问数组中的-1索引时。
答案 1 :(得分:2)
for(int i = ArrayOfInts.length; i >= 1; i--)
您好请用以下行替换上面的代码行
for(int i = ArrayOfInts.length-1; i >= 0; i--)
答案 2 :(得分:0)
我对代码做了一些修正:
1.对于1st for循环,而不是int i = ArrayOfInts.length,使用int i = ArrayOfInts.length-1,这是beacuse,length将返回数组中的元素数,并且数组为零索引,因此在您的情况下长度将为是12即0到11
2.对于第二个for循环,而不是j-使用j ++,因为j从0开始到i
3.而不是ArrayOfInts [j - 1] = temp;使用ArrayOfInts [j + 1] = temp;
public static void main(String[] args)
{
int[] ArrayOfInts = {42, 97, 3, 689, 14, 1076, 3000, 8, 632, 327, 976, 4215};
for(int i = ArrayOfInts.length-1; i >= 1; i--)
{
for(int j = 0; j < i; j++)
{
if (ArrayOfInts[j] > ArrayOfInts[j + 1])
{
int temp = ArrayOfInts[j];
ArrayOfInts[j] = ArrayOfInts[j + 1];
ArrayOfInts[j + 1] = temp;
}
}
}
for(int i = 0; i < ArrayOfInts.length; i++)
{
System.out.print(ArrayOfInts[i] + " ");
System.out.println();
}
}