为什么我的代码越界了?
why is my code going out of bounds?
我写了这段代码:
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);
}
}
我一遍又一遍地遇到同样的问题。它一直说我越界了。我该如何解决这个问题?
您知道数组索引从零到数组大小减一(即它们从零开始)吗?所以有效索引是 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);
}
我写了这段代码:
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);
}
}
我一遍又一遍地遇到同样的问题。它一直说我越界了。我该如何解决这个问题?
您知道数组索引从零到数组大小减一(即它们从零开始)吗?所以有效索引是 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);
}