问答详情
源自:7-1 编程练习

求帮忙看看哪里错了

import java.util.Arrays;

public class HelloWorld {


    public static void main(String[] args) {

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

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

       HelloWorld hello=new HelloWorld();

      hello.scoreMaxs(scores);

        

    }

        public void scoreMaxs(int [] scores){

            Arrays.sort(scores);

        int j=0;

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

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

              continue;

          }

          j++;

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

         if(j>3){

             break;

         } 

        }

       

     }

}



提问者:慕丝9243639 2019-03-24 00:40

个回答

  • 弯曲的小手
    2019-03-26 21:27:02

    楼上的正解.其实循环判断那里不一定要>=,>也可以的

    把输出System.out.println(scores[i]);放出循环就可以了


  • 慕函数1888976
    2019-03-24 16:09:32

    public void scoreMaxs(int [] scores){

    Arrays.sort(scores);

    int j=0;

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

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

    continue;

    }

    j++;

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

    if(j>=3)

    break;

    }

    按照你的思路修改后的。

    1. int i的初始值应该是 scores.length-1。数组长度是7,但最后一个元素是scores[6]就是最后一个了。

      (这里改了就能运行了)

    2. "j>3" 改为 "j>=3"不然会输出4个元素。

    3. break 前后的"{ }"可以省略。

      ***初学者,第一次指点别人,想了好久***

  • qq_越努力越幸运_jkmyMU
    2019-03-24 14:30:45

    最后多了一个花括号 删掉