2015-05-23 46 views
0

我已經寫了一個應該得到名稱和信息列表的程序。那麼,我需要解決這個問題幾個類,如學生和大學必須回答。但問題是,我打算讓學生信息不同的方式在C#中定義對象列表?

靜態無效的主要(字串[] args){

Console.WriteLine("Some students enter the information you want? "); 
    Cunt = int.Parse(Console.ReadLine()); 

    University university = new University();   
    university.Add(); 
    university.Sort(); 
    university.Report(); 
    Console.ReadKey(); 
} 

爲了解決這個問題,我必須指定的學生數量。

class University { Student [] student = new Student [3];

private int n = 0; 
public University() 
{ 

     for (int i = 0; i < 3; i++) 
      student[i] = new Student(); 
} 

public void Add() 
{ 
    Console.WriteLine(); 
    for (int i = 0; i < 3; i++) 
    { 
     student[n].Read(); 
     n++; 
    } 
} 

例如,我有三個學生的人數。我如何創建一種方法來輸入提供信息並且沒有默認的學生人數?而不是數字3是一個給用戶期望的數字的變量。

然後在朋友的幫助下改變程序,但我得到了這個問題。

class University 
{ 
// Student[] student = new Student[3]; 
    public int NumbersOfStudents { get; private set; } 

    public Student[] student; 

    public University(int numberOfStudents) 
    { 
     for (int i = 0; i < numberOfStudents; i++) 
      student[i] = new Student(); 
    } 
    private int n = 0; 
    /* public University() 
     { 

       for (int i = 0; i < 3; i++) 
        student[i] = new Student(); 
     }*/ 

但是,當我運行它時,我得到的錯誤:對象引用未設置爲對象的實例。

notic:該程序不能使用該列表。

+1

請把更多的精力投入到今後格式化您的問題... –

+0

@JonSkeet當然... – hojat

回答

2

你永遠不會初始化你的student字段,所以它是空的。你可以使用:

// Note: public fields are almost *always* a bad idea 
private readonly Student[] students; 

public University(int numberOfStudents) 
{ 
    students = new Student[numberOfStudents]; 
    for (int i = 0; i < numberOfStudents; i++) 
    { 
     students[i] = new Student(); 
    } 
} 

然而,這是一個非常討厭的解決方案,在我看來 - 你爲什麼要創建所有這些無用的Student對象?你爲什麼提前填寫University

這將是更好地使用List<T>,而不是一個數組:

public class University 
{ 
    private readonly IList<Student> students = new List<Student>(); 
    // Presumably some other fields and properties 

    public void AddStudent(Student student) 
    { 
     students.Add(student); 
    } 
} 
+0

感謝喬恩程序將正常工作至於代碼'public void Add() Console.WriteLine(); (int i = 0; i <3; i ++) { student [n] .Read(); n ++; } }' 我應該放置什麼3才能正常工作? – hojat

+0

@hojat:它不會炸燬 - 除非'numberOfStudents'小於3,但這是一個非常奇怪的設計,國際海事組織。你爲什麼要讀3個學生的細節? –

+0

我認識我的學生而不是3,但我不給 – hojat