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

感觉逻辑对的呀,实在找不出错误啊..........


import java.util.Arrays;


public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

       HellWorld hello =new HelloWorld(); 

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

       hello.rank(scores);

        

    }

}

    

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

    public void rank(int[] scores){

        Arrays.sort(scores);

        int num = 0;

        while(num<3){

            for(int i=scores.length-1;i>0;i--){

                if(scores[i]>=0&&scores[i]<=100){

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

                    num++;

                }

            }

        }

    }

 

提问者:灿先森 2018-06-22 22:07

个回答

  • skjdkjs
    2018-07-12 16:34:23

    https://img2.mukewang.com/5b47120e0001c60a05470082.jpg这里应该是成绩小于0或者成绩大于100,故写法应该为:scores[i]<0 || socres[i]>100,0分与100都是正常分数,正常逻辑来讲,不应该写为小于等于或者大于等于。

  • 慕粉3910332
    2018-06-23 09:35:22

    你的循环是错的。

    当你的for循环做完后, 你的num 肯定是大于3 的了。

    因为是要先做for循环,当你的scores 是100 和0 之内, 打印出score[i] , 并且Num ++ , 做完这个循环之后检查while循环, 所以你就会打印出全部的Scores了。 


    我的代码:

    import java.util.Arrays;

    public class HelloWorld {

        //完成 main 方法

        public static void main(String[] args) 

        {

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

            HelloWorld a = new HelloWorld();

            

            System.out.println("The top three grades of this exam are: ");

            

            Arrays.sort(scores);

            a.sort(scores);

            

        }

        

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

        void sort(int scores[])

        {

            int available = 1;

            for(int element = scores.length -1 ; element>= 0 ; element--)

            {

                if(scores[element] < 0 || scores[element]>100)

                { 

                    continue;

                }

                

                System.out.println(scores[element]);

                available++;

                

                if(available > 3)

                {

                    break;

                }

            }

        }