JAVA 小程序的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 04:12:04
给定一个数组:int[] arrayOfInts = {32,87,3,589,12,1076,2000,8,622,127};请按从小到大的顺序排列,并打印出来.

我的答案:
class asc {
public static void main (String[] args) {
int[] arrayOfInts = {32,87,3,589,12,1076,2000,8,622,127};
for(int i = 0; i < arrayOfInts.length; i++) {
for(int j= i; j < arrayOfInts.length - i; j++){
if(arrayOfInts[j] > arrayOfInts[j+1]) {
int k;
k = arrayOfInts[j];
arrayOfInts[j] = arrayOfInts[j+1];
arrayOfInts[j+1] = k;
}
}
}
for(int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + "\t");
}
}
}

编译通过,但是到运行的时候出现这样的异常:
java.lang.ArrayIndexOutOfBoundsException: 10

请问这个问题如何处理?

for(int i = 0; i < arrayOfInts.length; i++) {
for(int j= i; j < arrayOfInts.length - i; j++){
if(arrayOfInts[j] > arrayOfInts[j+1]) {
这里越界了
应该是 j < arrayOfInts.length - i-1;
你想下后面是arrayOfInts[j+1])
这不是越界了吗

数组越界..

道理同上,该法如下

class asc {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 };
for (int i = 0; i < arrayOfInts.length; i++) {
for (int j = 0; j < arrayOfInts.length - i-1; j++) {
if (arrayOfInts[j] > arrayOfInts[j + 1]) {
int k;
k = arrayOfInts[j];
arrayOfInts[j] = arrayOfInts[j + 1];
arrayOfInts[j + 1] = k;
}
}
}
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + "\t");
}
}
}