Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 做一个数组分类器_Java_Exception - Fatal编程技术网

Java 做一个数组分类器

Java 做一个数组分类器,java,exception,Java,Exception,我正在试着做一个数组分类器。但我有一个错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:7 我不知道怎么修理它。如果用箭头删除该行,则代码可以工作,但不会交换。我做错了什么 谢谢你的帮助 public class Main { public static void main(String[] args) { int[] list = {5, 3, 7, 2, 4, 8}; for (int

我正在试着做一个数组分类器。但我有一个错误:

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

我不知道怎么修理它。如果用箭头删除该行,则代码可以工作,但不会交换。我做错了什么

谢谢你的帮助

public class Main {

    public static void main(String[] args) {
        int[] list = {5, 3, 7, 2, 4, 8};

        for (int i = 0; i < list.length; i = i + 2) {
            if (i != list.length - 1) {

                if (list[i] > list[i + 1]) {

                    int leftNumber = list[i];
                    int rightNumber = list[i + 1];

                    int src = i;
                    int temp = list[i];

                    list[i] = list[i + 1];
                    //--> list[i + 1] = list[temp];

                    System.out.println(leftNumber + " : " + rightNumber);
                    System.out.println(i + " : " + (i + 1));

                    System.out.println(Arrays.toString(list));


                } else {
                    System.out.println("Good!");
                }
            }
        }


    }



}
公共类主{
公共静态void main(字符串[]args){
int[]list={5,3,7,2,4,8};
对于(int i=0;i列表[i+1]){
int leftNumber=列表[i];
int rightNumber=列表[i+1];
int src=i;
int temp=列表[i];
列表[i]=列表[i+1];
//-->列表[i+1]=列表[temp];
System.out.println(leftNumber+“:”+rightname);
System.out.println(i+“:”+(i+1));
System.out.println(Arrays.toString(list));
}否则{
System.out.println(“好!”);
}
}
}
}
}

temp
不是数组索引:您分配了它
list[i]
,它是数组元素。
temp
不是数组索引:您分配了它
list[i]
,它是数组元素。

int-temp=list[i]
列表[i+1]=列表[temp]是导致问题的行


temp
可能超过列表的大小,您如何访问
list[temp]
,您可能希望将其替换为
list[i+1]=temp
int temp=list[i]
列表[i+1]=列表[temp]是导致问题的行


temp
可能超过列表的大小,您如何访问
list[temp]
,您可能希望将其替换为
list[i+1]=temp
您的问题在于list[temp];。在这里,当临时值大于数组大小时,它将崩溃。您需要更正代码,如下所示:-

list[i + 1] = leftNumber;
list[i ] = rightNumber;
如果条件
,它仍将在
中崩溃,因此将
更改为
循环,如下所示:

 for (int i = 0; i < (list.length - 1); i = i + 2)

以上所有的行都是无用的

您的问题在于列表[temp];。在这里,当临时值大于数组大小时,它将崩溃。您需要更正代码,如下所示:-

list[i + 1] = leftNumber;
list[i ] = rightNumber;
如果条件
,它仍将在
中崩溃,因此将
更改为
循环,如下所示:

 for (int i = 0; i < (list.length - 1); i = i + 2)

以上所有的行都是无用的

试过调试吗?是的,但我不知道如何修复它@词典当
i==list.length-1
时,
i==list.length-1->5+1=6
会给出什么。。。还是我想错了?@Bastiaan那么,如果
list.length==6
,你认为
list[6]
会给你什么?试过调试?是的,但我不知道如何修复它@词典当
i==list.length-1
时,
i==list.length-1->5+1=6
会给出什么。。。还是我想错了?@Bastiaan那么,如果
list.length==6
,你认为
list[6]
会给你什么?
list[I+1]
也是一个问题,因为
I+1
I==list.length-1
反斜杠时超出范围,是的,在那种情况下它会在这里崩溃
if(list[I]>list[I+1])
list[i+1]
也是一个问题,因为
i+1
i==list.length-1
@反斜杠时会越界,如果(list[i]>list[i+1]),则在这种情况下会在此处崩溃