为了账号安全,请及时绑定邮箱和手机立即绑定

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

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;

    }

}


正在回答

4 回答

http://img1.sycdn.imooc.com//5e3a5abc000186fb06530659.jpg

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信