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

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

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

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.sycdn.imooc.com//5efc1ef80001f64810510626.jpg

正在回答

4 回答

大佬,要不这样:

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.sycdn.imooc.com//5f0466c90001f1b608400771.jpg


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

哈哈,我竟然看懂了

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

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

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

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

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

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

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

举报

0/150
提交
取消

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

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