簡體   English   中英

如何在C#中填充數組列表?

[英]How to populate array lists in c#?

我的作業是讀取學生記錄文件,然后計算並顯示每門課程的最終成績。 作為一個古老的過程程序員,考慮到我們應該從中開始的UML,我很難弄清楚“適當的”(例如,大多數OO)程序流程。 一個很大的問題是,這是我第一次實現數組列表,即使細讀了Java教程和大量在線示例之后,我對實際示例還是有些模糊。 我認為學期末的大腦模糊性使我無法將這些示例應用於這項作業。

這是我到目前為止的位置:

我的主要方法包括

FinalStudentGrade finalGradeReport = new FinalStudentGrade();
finalGradeReport.MainMethod();

它將調用Students.PopulateStudents(@"grades.txt")來顯示成績報告。 PopulateStudents()讀取數據文件,通過構造函數並基於以下數據成員創建學生對象:

string nameFirst;
string nameLast;
string studentID;
ArrayList Earned; 
ArrayList Possible; 
float average;
string letterGrade;

PopulateStudents方法讀取文件,為文件中的每一行創建一個Student對象,包括計算出的平均值和字母等級。 然后,需要將這些學生中的每一個添加到List<Student> theStudentList;

class Students
{
    List<Student> theStudentList;
    public bool PopulateStudents(string @sourceData)   
    {
        String sourcePath = sourceData;
        theStudentList = new List<Student>();
        bool success = true;
        try
        {
            StreamReader inputReader = new StreamReader(sourcePath);
            while (inputReader != null)
            {
                String inputLine = inputReader.ReadLine();
                char delim = ',';   
                String[] inputValues = inputLine.Split(delim); 

....我被困住了....

我正要定義nameFirst = inputValues[1]; nameLast = inputValues[2]; studentID = inputValues[0]; 等等,但是后來我意識到我沒有使用構造函數來創建Student對象。

是否需要創建Student.nameFirst=... ,然后用這些對象填充theStudentList 或可以我只限定theStudentList[recordCounter].nameFirst (限定recordCounter第一,當然)因為theStudentList被instatiated作為List<Student>(); 進行此操作的最佳方法是什么,我是否以一種很好的方式可視化了類之間的程序流程?

好吧,我沒有看到定義的構造函數,所以我假設您沒有定義采用參數的構造函數。 在這種情況下,您可以先構造對象,然后設置屬性:

Student s = new Student();
s.nameFirst = inputValues[1];
s.nameLast = inputValues[2];
s.studentID = inputValues[0];

或使用初始化語法

Student s = new Student() {
    nameFirst = inputValues[1]
    nameLast = inputValues[2]
    studentID = inputValues[0]
    };

如果確實定義了構造函數(例如,一個具有您提到的三個屬性的構造函數),則只需使用構造函數即可:

Student s = new Student(inputValues[1], inputValues[2], inputValues[0]);

然后只需添加創建的學生:

theStudentList.Add(s);

僅有一點附錄,使其比D Stanley的答案更易於閱讀:

theStudentList.Add(new Student {
    nameFirst = inputValues[1],
    nameLast = inputValues[2],
    studentID = inputValues[0]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM