问答详情
源自:7-1 编程练习

这样为什么运行不了

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]);

    }

    

    

    

    

    

    

    

    

}


提问者:慕UI1226964 2017-10-19 21:08

个回答

  • 悟酱起飞
    2019-05-23 14:58:55

    a[i]<a[i+1]这一行,你这个外面的for循环是i < a.length;那你这个a[i+1]就取不到了,所以会报错。

    就算解决了报错,你这个也不能满足题目的要求,你可以走一遍:89和0,89胜出,a数组第一个是89,此时开始判断0和64了,a数组第二个就是64了,然后是64和91比较,第三个就是91了,有没有发现哪里不对?