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

代码通过了,但是运行结果不对,求大神指点迷津

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.scoresSort(scores,scores.length);

    }

    

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

    public void scoresSort(int[] scores,int num){

        int[] scoresCorrect=new int[num];

        Arrays.sort(scores);

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

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

                i--;

                continue;

            }else{

                scoresCorrect[j]=scores[i];

                i--;

            }

        }

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

        for(int i=scoresCorrect.length-1;i>=scoresCorrect.length-3;i--){

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

        }

    }

    

https://img1.sycdn.imooc.com//5c64d3890001a15004880184.jpg 这是我的错误的运行结果

https://img1.sycdn.imooc.com//5c64d38a0001b2cc04610181.jpg这是正确的结果


正在回答

3 回答

别说,你这bug挺多的。

1)score<0||score>100,是或不是且

2)for循环里第三项j++删掉,把j++加进else里;或者把j++改成i--,把句里的if和else里的i--全删掉,再把j++加进else

3)你是先把原数组从小到大排序之后,再从尾到头有选择的放进correct数组里,所以correct数组本就已经是从大到小的顺序,你输出的时候应该从前向后输出,不是从后向前输出。

发一个给你debug之后的版本:

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.scoresSort(scores,scores.length);

    }

    

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

    public void scoresSort(int[] scores,int num){

        int[] scoresCorrect=new int[num];

        Arrays.sort(scores);

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

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

                i--;

                continue;

            }else{

                scoresCorrect[j]=scores[i];

                i--;

                j++;

            }

        }

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

        for(int i=0;i<3;i++){

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

        }

    }

}

另外你写这个好麻烦啊,直接输出就行没必要再列到数组输出;数组长度本就可以.length得到没必要再设一个参数;此外排序之后后面的数只可能大于100不可能小于零,不用判断是否小于零;最后,你只需要前三个,没必要把所有有效数字都排一遍。

我发一下我写的吧。

public void prints(int[] score){

    Arrays.sort(score);

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

    int i=score.length-1;

    for(int j=1;j<=3;i--){

    if(score[i]>100)

    continue;

    else

        {System.out.println(score[i]);j++;}

    }


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

 public static void main(String[] args) {
         int[] scores={89,-23,64,91,119,52,73};
         HelloWorld hello=new HelloWorld();
         hello.scoresSort(scores,scores.length-2);
     }
    
     //定义方法完成成绩排序并输出前三名的功能
     public void scoresSort(int[] scores,int num){
       int[] scoresCorrect=new int[num];
         Arrays.sort(scores);
         int i=0,j=0;
       for(i=0;i<scores.length;i++){
             if(scores[i]>0 && scores[i]<100){
              scoresCorrect[j] = scores[i];
              j++; 
             }
        } System.out.println("输出前三名成绩:");
             for(j=scoresCorrect.length-1;j>=scoresCorrect.length-3;j--){
          System.out.println(scoresCorrect[j]);
         }
        }

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

public static void main(String[] args) {
         int[] scores={89,-23,64,91,119,52,73};
         HelloWorld hello=new HelloWorld();
         hello.scoresSort(scores,scores.length-2);
     }
    
     //定义方法完成成绩排序并输出前三名的功能
     public void scoresSort(int[] scores,int num){
       int[] scoresCorrect=new int[num];
         Arrays.sort(scores);
         int i=0,j=0;
        while(i<scores.length){
             if(scores[i]>0 && scores[i]<100){
              scoresCorrect[j] = scores[i];
              j++;
              i++; 
             }else{
              i++;
             }  
        } System.out.println("输出前三名成绩:");
             for(j=scoresCorrect.length-1;j>=scoresCorrect.length-3;j--){
          System.out.println(scoresCorrect[j]);
         }

       
         }

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

举报

0/150
提交
取消

代码通过了,但是运行结果不对,求大神指点迷津

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