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

这个题排序是从小到大的排序方式 后期结果为什么是大到小?哪个在控制?


package zjc;


import java.util.Arrays;


public class Test4 {

  

//完成 main 方法

    public static void main(String[] args) {

     //定义score数组

     int [] score={89,-23,64,91,119,52,73}; 

     //创建对象

     Test4 Hello=new Test4();

     //输出成绩

     System.out.println("考试成绩的前三名为:");

     //进行传参

     Hello.Top3(score);

     

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    

    public void Top3(int [] score){

       //对数组进行排序

       Arrays.sort(score);

       int num=0;

       //遍历数组

       for(int i=score.length-1;num<3 && i>0;i--){

           if(score[i]>100 ||score[i]<0){

            continue;

           }

           num++;

           System.out.println(score[i]);

       }

    }

}


提问者:上进学长 2017-08-13 15:21

个回答

  • nuanchazy
    2017-08-13 18:00:41
    已采纳

    for(int i=score.length-1;num<3 && i>0;i--){

               if(score[i]>100 ||score[i]<0){

                continue;

               }

               num++;

               System.out.println(score[i]);

           }

    你在用for遍历数组的时候就是从scores[]数组的最后一位scores[length-1]开始遍历的,即从最大的那位开始往小的方向遍历。遇到小于0或大于100的数就略过,只要符合大于0小于100就输出。所以即使Arrays.sort的排序是从小到大,但你遍历是从大到小遍历的,遍历后就输出。所以就是从大到小输出。

  • 明若晓妍
    2017-08-13 17:11:24

              for(int i=score.length-1;num<3 && i>0;i--){

               if(score[i]>100 ||score[i]<0){

                continue;

               }

               num++;

               System.out.println(score[i]);

    这个for循环控制了最后的结果输出,for循环是倒序输出,由排序完之后数组的最后一个数字开始输出。

  • qq_沐子语_03865839
    2017-08-13 16:42:24

     Arrays.sort(score);