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]),则在这种情况下会在此处崩溃