[英]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.