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

运行成功,但结果排序和答案不一样,怎么解决?大神帮

//导入Arrays类

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};   

    hello.top3(scores);    

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

    }

    

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

    public void top3(int[] scores){

    //定义一个变量,统计有效成绩的前三名的数量

    int so=0;

    

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

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

            

            continue;

        }

        so++;

        Arrays.sort(scores);

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

    }

   

  }

    

}


正在回答

4 回答

将数组作为参数进入函数后,开始并未对数组进行处理,for语句取数组的最后一个元素为73,if语句不满足,不执行continue,循环继续,so++,数组排序,输出排序后最后一个值,即最大值119,进入第二次循环,输出倒数第二大的值91,后续一直未满足if语句,持续输出,直到遍历完整个数组。

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

  Arrays.sort(scores);排序应该放在for循环前面,而且你的判断语句也错了。

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

你的判断语句出错了,应该是scores[i]<=100

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

import java.util.Arrays;


public class HelloWorld {

    


    //完成 main 方法

    public static void main(String[] args) {

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

        HelloWorld hello = new HelloWorld();

        hello.sort(scores);

    }

    

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

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

        Arrays.sort(scores);

        int count = 0;

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

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

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

                count++;

                

            }else{

                continue;

            }

            if(count==3){

                    break;

                }

        }

        return scores;



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

举报

0/150
提交
取消

运行成功,但结果排序和答案不一样,怎么解决?大神帮

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