2014-02-09 61 views
1

我有這個任務,我需要使用靜態方法來獲取學生ID然後在該靜態方法評估他們,如果學生已通過或失敗他們的類。這對我來說有點難度,因爲靜態方法應該只有一個參數。在Java中使用枚舉靜態方法

這可以通過不將私有變量更改爲私有靜態變量來實現嗎?

任何方向非常感謝。

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

} 

我真的不知道如何去了解這個..

+3

枚舉是靜態數據,如A級的價值,B,C。你絕不會存儲像約翰在枚舉級的瞬時值。 – jeremyjjbrown

+0

所以如果我要在枚舉GradeDetail中創建一個靜態方法來比較成績,我該怎麼做? –

回答

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; 

這樣應該可以讓你開始在正確的道路上。

3

枚舉是靜態數據,如A級,B,C的值。你絕不會存儲像約翰在枚舉級的瞬時值。你爲什麼不嘗試使用靜態值的枚舉。

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 - 我沒有測試此代碼