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