public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int []scores= { 89 , -23 , 64 , 91 , 119 , 52 , 73};
HelloWorld hello=new HelloWorld();
hello.set(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void set(int []a)
{
int temp;
for(int j=0;j<a.length;j++)
{
if(a[j]<0)
a[j]=0;
}
for(int i=0;i<a.length;i++)
{
if (a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
System.out.println("考试成绩的前三名为:");
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
}
}
当 i = a.length -1 的时候,a[i + 1] 也就是 a[a.length] 是没有值的,直接超出内存范围了所以报错。另外,你这个排序算法不对,你这个不是冒泡排序,你这个只是如果两个数比一下,小的放到前面,大的放到后面,冒泡排序是两层循环。