Cc-282 2023-01-08 03:08 采纳率: 40%
浏览 138
已结题

Java错误:main方法不能被声明为静态的静态方法只能在静态或顶级类型中声明(给出的代码想要有解决办法)

######问题如下
The method main cannot be declared static; static methods can only be declared in a static or top
level type

img

我想要达到的结果,希望能得到结果,谢谢
package ManagementSystem;
import java.util.*;
class Athlete{                      //运动员类
    private String name,number;             //运动员姓名、参赛号码
    private double grade;                   //运动员成绩
    public void SetName(String name) {           //设置姓名
        this.name=name;
    }
    public void SetNumber(String number) {      //设置参赛号码
        this.number=number;
    }
    public void SetGrade(double grade) {         //设置成绩
        this.grade=grade;
    }
    public String GetName() {                    //获取姓名
        return name;
    }
    public String GetNumber() {                  //获取参赛号码
        return number;
    }
    public double GetGrade() {                  //获取成绩
        return grade;
    }

static class Recorder{         //保持记录者类
    private String mname;
    private double record;
    public void SetMname(String mname) {
        this.mname=mname;
    }
    public void SetRecord(double record) {
        this.record=record;
    }
    public String GetMname() {
        return mname;
    }
    public double GetRecord() {
        return record;
    }
}
public class system { 
    private static final int MAXITEM=3;
    private static final int MAXNUMBER=100;
        public static void main(String[] args) {
            Athlete[][] man=new Athlete[MAXITEM][MAXNUMBER]; 
            Recorder[] re=new Recorder[3];          //保持项目的纪录
            re[0].SetMname("李文");re[0].SetRecord(23.4);       
            re[1].SetMname("冯伟");re[1].SetRecord(23.39);
            re[2].SetMname("戴瑞");re[2].SetRecord(5.33);
            int n[]=new int[3];
            Scanner sc=new Scanner(System.in);
            while(true) {             //循环菜单界面
                
                System.out.println("\n-------------菜单(menu)-------------");
                System.out.println("1.录入运动员成绩;");
                System.out.println("2.每个项目的平均成绩、最好成绩以及最差成绩;");
                System.out.println("3.每个项目的成绩按降序排序;");
                System.out.println("4.判断每个项目是否有破纪录的运动员;");
                System.out.println("5.查询运动员成绩。");
                System.out.println("\n*请输入对应序号,进入功能。输入0结束运行");
                System.out.println("------------------------------------");
                int choice=sc.nextInt();         //输入选择的功能
                int i,j;
                System.out.println("请输入各项目的纪录(姓名 成绩):");     //空格隔开
                for(i=0;i<3;i++) {
                    String str=sc.next();
                    String[] str1=str.split(" ");             //通过split切割字符串,按行读取数据,用空格分隔
                    re[i].SetMname(str1[0]);
                    re[i].SetRecord(Double.parseDouble(str1[1]));
                }
                switch(choice) {
                case 0:
                    System.exit(0);
                    break;
//成绩录入
                case 1:
                    System.out.println("\n---------------录入成绩---------------");
                    for(i=0;i<3;i++) {
                        System.out.print("请输入要录入项目"+(i+1)+"的人数:");
                        
                        n[i]=sc.nextInt();
                        System.out.println("          ------项目"+(i+1)+"------");
                        if(i==1)
                            System.out.println("参赛号码 姓名 成绩(s)");
                        else
                            System.out.println("参赛号码 姓名 成绩(m)");
                        for(j=0;j<n[i];j++) {
                            String s=sc.next();    //获取用户输入
                            String[] s1=s.split(" ");       //通过split切割字符串,按行读取数据,用空格分隔
                            //将输入的数据保存到运动员数组中
                            man[i][j].SetNumber(s1[0]);    
                            man[i][j].SetName(s1[1]);
                            man[i][j].SetGrade(Double.parseDouble(s1[2]));
                        }
                    }
                    System.out.println("\n---------------录入成绩---------------");
                    break;
//成绩计算
                case 2:
                    double ave,best=0,worse;   
                    System.out.println("\n---------------计算成绩---------------");
                    System.out.println("\n项目 平均成绩 最好成绩 最差成绩");
                    for(i=0;i<3;i++) {
                        worse=man[i][0].GetGrade();
                        j=0;
                        for(j=0;j<n[i];j++) {
                            ave+=man[i][j].GetGrade();
                            if(best<man[i][j].GetGrade() && i!=1)      //求最好成绩
                                best=man[i][j].GetGrade();
                            else if(best>man[i][j].GetGrade() && i==1)
                                best=man[i][j].GetGrade();
                            if(worse>man[i][j].GetGrade() && i!=1)     //求最差成绩
                                worse=man[i][j].GetGrade();
                            else if(best>man[i][j].GetGrade() && i==1)
                                best=man[i][j].GetGrade();
                        }
                        ave=ave/n[i];
                        System.out.println((i+1)+"  "+String.format("%.2f", ave)+" "+String.format("%.2f", best)+" "+String.format("%.2f", worse));    
                    }
                    System.out.println("\n---------------计算成绩---------------");
                    break;
//成绩排序
                case 3:
                    int k,l;
                    System.out.println("\n---------------成绩排序---------------");           //选择排序
                    for(i=0;i<3;i++) {
                        System.out.println("          ------项目"+(i+1)+"------");
                        if(i==1)
                            System.out.println("参赛号码 姓名 成绩(s)");
                        else
                            System.out.println("参赛号码 姓名 成绩(m)");
                        for(j=0;j<n[i];j++) {
                            k=j;
                            for(l=j+1;l<n[i];l++) {
                                if(man[i][j].GetGrade()<man[i][l].GetGrade() && i!=1) 
                                    k=l;
                                else if(man[i][j].GetGrade()>man[i][l].GetGrade() && i==1)
                                    k=l;
                            }
                            if(k!=j) 
                                System.out.println(man[i][k].GetNumber()+" "+man[i][k].GetName()+" "+man[i][k].GetGrade());
                            
                            else 
                                System.out.println(man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                        }
                               
                    }
                    System.out.println("\n---------------成绩排序---------------");
                    break;
//破纪录
                case 4:
                    System.out.println("\n--------------是否破纪录?--------------");
                    System.out.println("纪录保持者:\n项目一:"+re[0].GetMname()+" "+re[0].GetRecord());
                    System.out.println("项目二:"+re[1].GetMname()+" "+re[1].GetRecord());
                    System.out.println("项目三:"+re[2].GetMname()+" "+re[2].GetRecord());
                    for(i=0;i<3;i++) {
                        for(j=0;j<n[i];j++) {
                            if(man[i][j].GetGrade()>re[i].GetRecord() && i!=1) 
                                System.out.println("项目"+(i+1)+"有破纪录者:"+man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                else if(man[i][j].GetGrade()<re[i].GetRecord() && i==1) {
                                    re[i].SetMname(man[i][j].GetName());re[i].SetRecord(man[i][j].GetGrade());
                                    System.out.println("项目"+(i+1)+"有破纪录者:"+man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                    }
                                else
                                    System.out.println("项目"+(i+1)+"没破记录");
                        }
                    }
                    System.out.println("\n--------------是否破纪录?--------------");
                    break;
//查询
                case 5:
                    int c=0;
                    while(c==0) {
                        System.out.println("\n---------------查询成绩---------------");
                        System.out.print("请输入参赛号码:");
                        String s=sc.next();
                        for(i=0;i<3;i++) {
                            for(j=0;j<n[i];j++) {
                                if(man[i][j].GetNumber().equals(s)) {
                                    System.out.println(man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                }
                            }
                        }
                        if(i==4 && j==n[i])
                            System.out.println("该参赛号码不存在!!!");
                        System.out.println("\n---------------查询成绩---------------");
                        System.out.println("\n*继续查询0/返回菜单1");
                        c=sc.nextInt();
                    }
                    break;
                default:
                    System.out.println("输入错误!!请重新输入!!!");
                    break;
                }
            }
        }
}
}
package ManagementSystem;
import java.util.*;
class Athlete{                      //运动员类
    private String name,number;             //运动员姓名、参赛号码
    private double grade;                   //运动员成绩
    public void SetName(String name) {           //设置姓名
        this.name=name;
    }
    public void SetNumber(String number) {      //设置参赛号码
        this.number=number;
    }
    public void SetGrade(double grade) {         //设置成绩
        this.grade=grade;
    }
    public String GetName() {                    //获取姓名
        return name;
    }
    public String GetNumber() {                  //获取参赛号码
        return number;
    }
    public double GetGrade() {                  //获取成绩
        return grade;
    }

static class Recorder{         //保持记录者类
    private String mname;
    private double record;
    public void SetMname(String mname) {
        this.mname=mname;
    }
    public void SetRecord(double record) {
        this.record=record;
    }
    public String GetMname() {
        return mname;
    }
    public double GetRecord() {
        return record;
    }
}
public class system { 
    private static final int MAXITEM=3;
    private static final int MAXNUMBER=100;
        public static void main(String[] args) {
            Athlete[][] man=new Athlete[MAXITEM][MAXNUMBER]; 
            Recorder[] re=new Recorder[3];          //保持项目的纪录
            re[0].SetMname("李文");re[0].SetRecord(23.4);       
            re[1].SetMname("冯伟");re[1].SetRecord(23.39);
            re[2].SetMname("戴瑞");re[2].SetRecord(5.33);
            int n[]=new int[3];
            Scanner sc=new Scanner(System.in);
            while(true) {             //循环菜单界面
                
                System.out.println("\n-------------菜单(menu)-------------");
                System.out.println("1.录入运动员成绩;");
                System.out.println("2.每个项目的平均成绩、最好成绩以及最差成绩;");
                System.out.println("3.每个项目的成绩按降序排序;");
                System.out.println("4.判断每个项目是否有破纪录的运动员;");
                System.out.println("5.查询运动员成绩。");
                System.out.println("\n*请输入对应序号,进入功能。输入0结束运行");
                System.out.println("------------------------------------");
                int choice=sc.nextInt();         //输入选择的功能
                int i,j;
                System.out.println("请输入各项目的纪录(姓名 成绩):");     //空格隔开
                for(i=0;i<3;i++) {
                    String str=sc.next();
                    String[] str1=str.split(" ");             //通过split切割字符串,按行读取数据,用空格分隔
                    re[i].SetMname(str1[0]);
                    re[i].SetRecord(Double.parseDouble(str1[1]));
                }
                switch(choice) {
                case 0:
                    System.exit(0);
                    break;
//成绩录入
                case 1:
                    System.out.println("\n---------------录入成绩---------------");
                    for(i=0;i<3;i++) {
                        System.out.print("请输入要录入项目"+(i+1)+"的人数:");
                        
                        n[i]=sc.nextInt();
                        System.out.println("          ------项目"+(i+1)+"------");
                        if(i==1)
                            System.out.println("参赛号码 姓名 成绩(s)");
                        else
                            System.out.println("参赛号码 姓名 成绩(m)");
                        for(j=0;j<n[i];j++) {
                            String s=sc.next();    //获取用户输入
                            String[] s1=s.split(" ");       //通过split切割字符串,按行读取数据,用空格分隔
                            //将输入的数据保存到运动员数组中
                            man[i][j].SetNumber(s1[0]);    
                            man[i][j].SetName(s1[1]);
                            man[i][j].SetGrade(Double.parseDouble(s1[2]));
                        }
                    }
                    System.out.println("\n---------------录入成绩---------------");
                    break;
//成绩计算
                case 2:
                    double ave,best=0,worse;   
                    System.out.println("\n---------------计算成绩---------------");
                    System.out.println("\n项目 平均成绩 最好成绩 最差成绩");
                    for(i=0;i<3;i++) {
                        worse=man[i][0].GetGrade();
                        j=0;
                        for(j=0;j<n[i];j++) {
                            ave+=man[i][j].GetGrade();
                            if(best<man[i][j].GetGrade() && i!=1)      //求最好成绩
                                best=man[i][j].GetGrade();
                            else if(best>man[i][j].GetGrade() && i==1)
                                best=man[i][j].GetGrade();
                            if(worse>man[i][j].GetGrade() && i!=1)     //求最差成绩
                                worse=man[i][j].GetGrade();
                            else if(best>man[i][j].GetGrade() && i==1)
                                best=man[i][j].GetGrade();
                        }
                        ave=ave/n[i];
                        System.out.println((i+1)+"  "+String.format("%.2f", ave)+" "+String.format("%.2f", best)+" "+String.format("%.2f", worse));    
                    }
                    System.out.println("\n---------------计算成绩---------------");
                    break;
//成绩排序
                case 3:
                    int k,l;
                    System.out.println("\n---------------成绩排序---------------");           //选择排序
                    for(i=0;i<3;i++) {
                        System.out.println("          ------项目"+(i+1)+"------");
                        if(i==1)
                            System.out.println("参赛号码 姓名 成绩(s)");
                        else
                            System.out.println("参赛号码 姓名 成绩(m)");
                        for(j=0;j<n[i];j++) {
                            k=j;
                            for(l=j+1;l<n[i];l++) {
                                if(man[i][j].GetGrade()<man[i][l].GetGrade() && i!=1) 
                                    k=l;
                                else if(man[i][j].GetGrade()>man[i][l].GetGrade() && i==1)
                                    k=l;
                            }
                            if(k!=j) 
                                System.out.println(man[i][k].GetNumber()+" "+man[i][k].GetName()+" "+man[i][k].GetGrade());
                            
                            else 
                                System.out.println(man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                        }
                               
                    }
                    System.out.println("\n---------------成绩排序---------------");
                    break;
//破纪录
                case 4:
                    System.out.println("\n--------------是否破纪录?--------------");
                    System.out.println("纪录保持者:\n项目一:"+re[0].GetMname()+" "+re[0].GetRecord());
                    System.out.println("项目二:"+re[1].GetMname()+" "+re[1].GetRecord());
                    System.out.println("项目三:"+re[2].GetMname()+" "+re[2].GetRecord());
                    for(i=0;i<3;i++) {
                        for(j=0;j<n[i];j++) {
                            if(man[i][j].GetGrade()>re[i].GetRecord() && i!=1) 
                                System.out.println("项目"+(i+1)+"有破纪录者:"+man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                else if(man[i][j].GetGrade()<re[i].GetRecord() && i==1) {
                                    re[i].SetMname(man[i][j].GetName());re[i].SetRecord(man[i][j].GetGrade());
                                    System.out.println("项目"+(i+1)+"有破纪录者:"+man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                    }
                                else
                                    System.out.println("项目"+(i+1)+"没破记录");
                        }
                    }
                    System.out.println("\n--------------是否破纪录?--------------");
                    break;
//查询
                case 5:
                    int c=0;
                    while(c==0) {
                        System.out.println("\n---------------查询成绩---------------");
                        System.out.print("请输入参赛号码:");
                        String s=sc.next();
                        for(i=0;i<3;i++) {
                            for(j=0;j<n[i];j++) {
                                if(man[i][j].GetNumber().equals(s)) {
                                    System.out.println(man[i][j].GetNumber()+" "+man[i][j].GetName()+" "+man[i][j].GetGrade());
                                }
                            }
                        }
                        if(i==4 && j==n[i])
                            System.out.println("该参赛号码不存在!!!");
                        System.out.println("\n---------------查询成绩---------------");
                        System.out.println("\n*继续查询0/返回菜单1");
                        c=sc.nextInt();
                    }
                    break;
                default:
                    System.out.println("输入错误!!请重新输入!!!");
                    break;
                }
            }
        }
}
}


img

  • 写回答

1条回答 默认 最新

  • Halifax ‎ 2023-01-08 08:03
    关注

    你的 Athlete 类里面有好几个内部类,你可以把其他类移动到和 Athelete 的同一个文件夹下面。

    然后把,public static void main 方法,放到 Athelete 这个类里面,而不是你现在的 system 这个类。

    如果我就要放在 system 类,你可以把 system 类放到一个新的.java 文件里面,和 Athelete.java 在一个文件夹下面,即可。

    你现在报的错误是告诉你,你的 main 方法,不在一级类,跑到了 内部类里面了。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月8日
  • 已采纳回答 1月8日
  • 修改了问题 1月8日
  • 修改了问题 1月8日
  • 展开全部

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)