我有这个任务,我需要使用静态方法来获取学生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;}
}
老实说,我不知道怎么回事......
答案 0 :(得分:3)
枚举用于静态数据,例如A,B,C等级的值。您永远不会在Enum中存储像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 - 我没有测试此代码
答案 1 :(得分:2)
将数据存储在类似
的类中是合适的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;
这有望让你开始走上正确的道路。