哪里出错了,求解!!!!!!!

来源:7-1 编程练习

qq_AlwaysOnline_6

2019-07-18 20:08

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]);
    }
    
}

写回答 关注

3回答

  • 九章哀郢
    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比较好一些。

    九章哀郢

    System.out.println(fen[0]+"\n");可不用加"\n",因为rprintln会在字符串后添加换行符,而print则不会。

    2019-07-19 00:14:26

    共 1 条回复 >

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

    感谢大佬!已成功运行

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

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

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

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

1165514 学习 · 17586 问题

查看课程

相似问题