麻烦大佬帮忙看看问题出在哪了

来源:7-1 编程练习

噬魂师

2020-07-01 13:31

为什么我最后输出的是最小的三个,而且该剔除的数据没有剔除。。。。在线求大佬解答

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();
   
    System.out.println("考试成绩的前三名为:");    
    hello.topThree(scores);    
   
    }
    //定义方法完成成绩排序并输出前三名的功能
    public void topThree(int[] scores){
        Arrays.sort(scores);
        for(int i=scores.length-1;i>=0;i--){
            if(scores[i]<0||scores[i]>100)
            continue;
        }
    
        
    
        for(int j=0;j<=2;j++){
            System.out.println(scores[j]);
        }
    }
   
}http://img1.mukewang.com/5efc1ef80001f64810510626.jpg

写回答 关注

4回答

  • 慕函数4309305
    2020-07-07 20:13:03

    大佬,要不这样:

    package java12;

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

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

        hello.topThree(scores);       

        }

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

        public void topThree(int[] scores){

            Arrays.sort(scores);

            int count = 0;

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

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

                {

                continue;

                }

                else{

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

                count++;

                if(count >= 3) break;

                }

            }     

        }

    }

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


  • 慕函数4309305
    2020-07-07 19:59:28

    哈哈,我竟然看懂了

  • ArthurYang
    2020-07-06 10:08:51

    首先continue是跳出本次循环,那么你第一个for就毫无用处,你可以设置为超过限制的数变成一个负数,比如负一(如果是找最小的几个数,那么定义为大于100的数,比如101)

    另外,sort是从小到大排序,所以如果你想找到最小,那么可以直接从scores[0]开始,采用i++,去找最小的三个,但是如果想找最大的,可以从scores.length - 1开始,采用i--去找最大的三个(当然还有个笨办法是创建一个新数组,让新数组的length-1等于scores[0],以此类推)

  • 可乐饼
    2020-07-01 15:32:20

    sort是从小到大排序,所以你输出的是最小的3个。

    而且continue的作用只是跳出本次循环,不是剔除数据。

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

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

1165552 学习 · 17587 问题

查看课程

相似问题