问答详情
源自:7-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.san(scores); 
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    
    public void san(int scores [])
    {
        Arrays.sort(scores);
        int fen[]=new int [3];
        int j=0;
        for (int i=0;i<scores.length;i++)
        {
            if(scores[i]>=0 && scores[i]<=100)
            {
                fen[j]=scores[i];
                j++;
                while(j==3)
                break;
            }
        }
        System.out.println(fen[0]+"\n");
        System.out.println(fen[1]+"\n");
        System.out.println(fen[2]);
    }
    
}

提问者:qq_AlwaysOnline_6 2019-07-18 20:08

个回答

  • 九章哀郢
    2019-07-19 00:11:50
    已采纳

     其一,for (int i=0;i<scores.length;i++)改为for(int i=scores.length-1;i>=0;i--),因为排序后大元素在最后面小元素在最前面,所以要逆序循环;

    其二,while(j==3){break;}应该为if(j==3){break;},因为break只是跳出一层循环,所以break跳出的是while循环而不是外层的for循环。此外建议(j==3)改为j==fen.length比较好一些。

  • qq_AlwaysOnline_6
    2019-07-19 08:51:42

    感谢大佬!已成功运行

  • 慕田峪1094725
    2019-07-18 20:42:21

    你这好像还是在第一个for循环里面吧