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

输出结果不对,能过。这是。。。

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

        

        HelloWorld hello=new HelloWorld();

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

        int []getscores=hello.getScores(scores);

        for (int i = 0; i < getscores.length; i++) {

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

}

        

        

    }

    

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

    public int[] getScores(int [] scores){

        int count=0;

        int []No3=new int[3];

        Arrays.sort(scores);

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

            

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

                continue;

            }

            

            count++;

            if(count>3){

                break;

            }

            else {

            No3[count--]=scores[i];

            }

          

           }

        

       return No3;

    }

}


提问者:qq_荒原困兽_04231195 2020-01-18 20:31

个回答

  • 四方dog
    2020-02-05 14:04:18

    http://img1.mukewang.com/5e3a5abc000186fb06530659.jpg

    这样写不就好了么,用ArrayList而不是List

  • 慕容7455523
    2020-02-03 15:17:34

    只说你的结果为啥不多奥,其他的先不说,首先看到你的count++,系统在执行完这条语句之后,count变为了1,好,因为这里的count等于1,所以执行else里的语句:count--,这里又把count降为了0,然后结束了本次循环,下次循环再执行到count++时,由于count已经被降为0了,所以count又等于1,然后进入了一个假性的死循环,一直执行完了整个for循环,所以最后52被赋值给了No3[1],为啥是下标是1呢,因为count--等于count还没改变的值,就等于1。反正我是不知道改啥了,想过一个思路吧,最好不要count++,count--一起使用。

  • qq_浮华毕醒_0
    2020-02-03 08:17:54

    直接sort,然后reverse,再用下标输出

  • 考个证
    2020-01-19 15:17:39

    主函数里的for循环不需要,在你getscores里加个输出语句就好了,

    count为什么是count--,不需要用数组来保存得到的3个数,直接输出就好了。