Java 为什么我的代码会越界?
我写了这段代码:Java 为什么我的代码会越界?,java,indexoutofboundsexception,quicksort,Java,Indexoutofboundsexception,Quicksort,我写了这段代码: class test { public static void main(String args[]) { int array[] = {1,2,3,4,5,6}; int i = 0; int b = 0; int c = 0; method.dog(i, b, c, array); } } public class method { static void dog (int i, int b, int c, int arr
class test {
public static void main(String args[]) {
int array[] = {1,2,3,4,5,6};
int i = 0;
int b = 0;
int c = 0;
method.dog(i, b, c, array);
}
}
public class method {
static void dog (int i, int b, int c, int array[]) {
if (array[i] <= array[c]) {
if (c == (int) array.length +1 ) {
int y = array[i];
array[i] = array[b];
array[b] = y;
if (b == array.length +1) return;
else b++; i =b; c=b; dog( i, b, c, array);
}
else c++; dog( i, b, c, array);
}else i ++; c= b; dog( i, b, c, array);
}
}
类测试{
公共静态void main(字符串参数[]){
int数组[]={1,2,3,4,5,6};
int i=0;
int b=0;
int c=0;
方法:狗(i,b,c,数组);
}
}
公共类方法{
静态void dog(int i、int b、int c、int数组[]){
如果(array[i]您确实知道数组索引从零到数组大小减一(即,它们是基于零的)?那么有效的索引是0
到array.length-1
(包括),那么您的检查b==array.length+1
是错误的,因为它允许高索引
另外,那些else
部分只包含一个小语句,而不是同一行中的其余语句。我已修复了您的错误,请参见下面的代码
static void dog(int i, int b, int c, int array[]) {
if (c<array.length-1 && array[i] <= array[c] ) {
if (c <(int) array.length-1) {
int y = array[i];
array[i] = array[b];
array[b] = y;
if (b < array.length)
return;
else
b++;
i = b;
c = b;
dog(i, b, c, array);
} else
c++;
dog(i, b, c, array);
} else
i++;
c = b;
dog(i, b, c, array);
}
static void dog(int i、int b、int c、int数组[]){
如果(cDid你试着调试它吗?亵渎已删除。来吧,没有必要这样做。试着打印数组的值,以便隔离发生的位置。你可能试图使用数组中不存在的索引。出于对调试和可读性的热爱,请在if-else语句周围使用大括号。我想你可以这样做被“一条线如果其他”的东西咬了一口。参考它很明显想要达到的目标:狗。