2016-05-07 45 views
0

我正在處理從exercism.io發現的問題。我爲學生建立了一個涉及他們各自信息的數據庫。我想出了一個可能可行的解決方案,但我不確定它在語法上是否可行。無論如何要使用String變量爲ArrayList/Any Object分配名稱?

import java.util.ArrayList; 

class Student { 
    String name; 
    Integer grade; 

    public Student(String name, Integer grade) { 
     this.name = name; 
     this.grade = grade; 
    } 
} 

我想跟蹤使用ArrayList包含各年級的int創建檔次,而無需創建一個完整的K-12學校逼真設置。我想根據需要添加分數。因此,當添加新學生時,我會檢查gradeList是否包含學生成績,如果不是,則創建該成績。我想要做的是將學生的成績轉換爲String,並使用String作爲ArrayList的名稱。

這可能嗎?

public class School { 
    Student current; 
    ArrayList<Integer> gradeList; 
    ArrayList<ArrayList<Student>> database; 

    public School() { 
     gradeList = new ArrayList<Integer>(); 
     database = new ArrayList<ArrayList<Student>>(); 
    } 

    public void createGrade(Integer grade) { 
     String addingGrade = Integer.toString(grade); 
     ArrayList<Student> addingGrade 
    } 

    public void add(Student newS) { 
     if (!gradeList.contains(newS.grade)) { 
      createGrade(newS.grade); 
     } 

    } 

} 
+0

你需要存儲有關等級的詳細信息 - 在這過程中它被賦予。否則,如果一個學生評分100次 - 你不知道告訴他他是從哪個課程中得到的。在學生檔案中存儲成績的邏輯是什麼?創建一個新班級 - 並將學生和課程存儲在其中。比創造會變得容易 - 你會檢查是否存在學生和課程的分數 – aviad

+0

對不起,我應該澄清,分數是學生所在的年級/年級。 –

+0

可以有多少個等級?只需在啓動時創建它們,無論它們是否被使用。 – Bohemian

回答

0

我想創建一個地圖是一個更好的辦法:

Map<String , ArrayList<Student>> map; 
    public void createGrade(Integer grade) { 
     if (map == null) { 
      map = new HashMap<String , ArrayList<Student>>(); 
     } 
     ArrayList<Student> list = new ArrayList<>(); 
     //... 
     //list.add(student1); 
     //list.add(student1); 
     //... 
     // todo add student 
     String addingGrade = Integer.toString(grade); 
     map.put(addingGrade , list); 
    } 
+0

我會試一試,我仍然是一名學生,而且我還沒有學到很多java中的Maps。他們在java中的字典是否有相似之處? –

+0

@ Swanson7是的,它們大致相同。如有疑問,請查看[碼頭](https://docs.oracle.com/javase/8/docs/api/java/util/Map.html) –

+0

@JornVernee謝謝 –

相關問題