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

来源:7-1 编程练习

上进学长

2017-08-13 15:21


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

       }

    }

}


写回答 关注

3回答

  • 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的排序是从小到大,但你遍历是从大到小遍历的,遍历后就输出。所以就是从大到小输出。

    nuanch...

    一起努力。共同进步

    2017-08-14 21:52:44

    共 2 条回复 >

  • 明若晓妍
    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);

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165574 学习 · 17587 问题

查看课程

相似问题