繁体   English   中英

在Java中将静态方法与枚举一起使用

[英]Use of static method with enum in Java

我有这项作业,我需要使用静态方法来获取学生ID,然后在该静态方法内评估学生是否通过了课堂或未通过课堂。 这对我来说有点挑战,因为静态方法只能接受一个参数。

是否可以通过不将私有变量更改为私有静态变量来实现?

任何方向都非常感谢。

import java.util.ArrayList;
public class Grade {
    public static void main(String[] args) {
        ArrayList<GradeDetail> gradeList = new ArrayList<GradeDetail>() ;

        System.out.println("Student ID: ");

        for(String s : args) {
            boolean match = false;

            for(GradeDetail grade : GradeDetail.values()) {
                if(s.equals(grade.getCode())) {
                    gradeList.add(grade);

                    match = true;
                }
            }

            if(!match) {
                System.out.printf("unknown student ID entered!");
            }
        }

        System.out.println("Students who passed: ");
        //Some function here

        System.out.println("Students who failed: ")
        //Some function here

        return;
    }
}

enum GradeDetail {
     JOHN       (101, 90)
   , ROB        (102, 50)
   , JAMES      (103, 55)
   ;

    private final int studentID;
    private final int studentGrade;

    GradeDetail(int id, int sGrade) {
        studentID = id;
        studentGrade = sGrade;
    }

    public int getID() {return studentID;}

    public int getGrade() {return studentGrade;}

}

老实说,我不知道该怎么做。

枚举用于表示静态数据,例如等级A,B,C的值。您永远都不会在John枚举中存储像John的等级这样的瞬态值。 为什么不尝试将枚举用于静态值。

enum GradeRange {
    A (100, 90),
    B (89, 80),
    C (79, 70);


    private final int high;
    private final int low;

    GradeRange(int high, int low) {
        high = high;
        low = low;
    }

   public GradeRange getGrade(int percent) {
       for (GradeRange gradeRange : GradeRange.values() {
            if (percent <= high && percent >= low)
                 return gradeRange;
       }
   }

} 

PS-我没有测试此代码

将数据存储在类似

class GradeDetail  {
   public final String sName ;
   public final int    iId   ;
   public final int    iGrade;
   public GradeDetail(String s_name, int i_id, int i_grade)  {
      sName = s_name;
      iId = i_id;
      iGrade = i_grade;
   }
}

然后,您将使用创建实例

GradeDetail gdJohn = new GradeDetail("John", 101, 90)

并访问它,例如

gdJohn.iGrade;

希望这可以帮助您开始正确的道路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM