java 数组越界的问题 大家帮帮我啊

来源:百度知道 编辑:UC知道 时间:2024/06/27 07:15:05
/*mport java.io.*;
public class shiyan
{
public static void main(String []args)
{int a[]=new int[10];
for(int i=1;i<10;i++)
{a[i]=i;
System.out.println(+a[i]);}
}
}*/
import java.io.*;
import java.util.Random;
public class shiyan
{
public static void main(String[] args)
{
/*Random random=new Random();
int a=(int) (10*random.nextDouble());
System.out.println(a);*/
// int num[]=new int[10];
/*for(int m=9;m>=0;m++)
num[m]=m;*/
int num []={20,10,30,21,50,51,23,12,13};
for(int j=9;j>=2;j--)
for(int i=0;i<j;i++)
if(num[i]>num[i+1])
{
int t;
t=num[i];
num[i]=num[i+1];
num[i+1]=t;
}
for(int n=0;n<10;n++)
System.out.println(+num[n]);
}
}

我看了你的代码,如果你想进行冒泡排序的话 !
正确代码应该是这样的.
public class Shiyan {
public static void main(String[] args) {
int num[] = { 20, 10, 30, 21, 50, 51, 23, 12, 13 };
for (int j = 1; j <num.length; j++)
for (int i = 1; i <num.length; i++)
if (num[i] > num[i-1]) {
int t;
t = num[i];
num[i] = num[i -1];
num[i-1] = t;
}
for (int n = 0; n < 9; n++)
System.out.print(num[n]+" ");
}
}

看来这是一个冒泡排序问题,你出现越界的地方有两个,在两个for循环上面。分别为第二个和第三个,下面为我改正过来的。
你看看

int num[] = { 20, 10, 30, 21, 50, 51, 23, 12, 13 };
for (int j = 9; j >= 2; j--)
for (int i = 0; i < j-1; i++)
if (num[i] > num[i + 1]) {
int t;
t = num[i];
num[i] = num[i + 1];
num[i + 1] = t;
}
for (int n = 0; n < 9; n++)
System.out.println(+num[n]);
希望以上回答对你能有所帮助

for(int j=8;j>=2;j--)//f