2016-06-18 13 views
0

Ich bin neu in C# und ich habe versucht, eine "Student" -Klasse, die den Namen des Studenten und einige andere Dinge. Ich habe ein Problem, Studentenname zu nehmen, da ich eine Ausnahme erhalte, wenn ich den Namen als Eingabe eintippe.String Eingabe in eine Klassenvariable in C#

In Erklärung,

public class Student 
{ 
    public string studentName;// this one 
    public long studentID; 
    public int score1; 
    ...etc 
} 

dann habe ich innen Main:

Student[] student = new Student[N]; 
// the N is determined by a previous block of code. 
for (int i = 0; i < N; i++) 
{ 
    check = false; // ignore this one. 
    Console.WriteLine("Student {0}", i + 1); 
    Console.Write("\t \t Name: "); 
    string input = Console.ReadLine(); 
    student[i].studentName = input; 
    // I get an exception at that last line, after typing whatever string.I feel like I've done something horribly wrong. 
} 

Thanks :)

+0

Was die Ausnahme ist, die Sie bekommen? –

+0

Willkommen bei Stack Overflow! Bitte gehen Sie durch die [Tour] (http://stackoverflow.com/tour), die [Hilfe-Center] (http://stackoverflow.com/help) und die [wie Sie eine gute Frage stellen] (http: // stackoverflow.com/help/how-to-ask), um zu sehen, wie diese Site funktioniert und um Ihnen zu helfen, Ihre aktuellen und zukünftigen Fragen zu verbessern, die Ihnen helfen können, bessere Antworten zu erhalten. –

+0

Eine nicht behandelte Ausnahme vom Typ 'System.NullReferenceException' ist in RandomCoding.exe aufgetreten – MoodyW

Antwort

4

Sie erklärt ein Array von Studenten, aber sie hat es nicht mit dem Student-Instanzen initialisiert . , d. H. Student [i] ist null.

Nach

for (int i = 0; i < N; i++) { 

sollten Sie tun

student[i] = new Student(); 
// Rest of the code. 
+0

Erste Zeile: Student [] Student = new Student [N]; – MoodyW

+1

Nein, ich meine in der Schleife. new Student [N] reserviert nur das Leerzeichen, es teilt den Speicherplatz nicht zu. Fügen Sie die Zeile hinzu, die ich Ihnen als erste Zeile in der Schleife gegeben habe, oder kurz bevor Sie Student [i] verwenden, und das Problem wird behoben. –

+1

Arbeitete! Was eigentlich passiert ist, dass ich die N-Nummer von Student zugewiesen habe, aber ich habe den Speicher nicht für jeden von ihnen richtig vergeben? Danke noch einmal :) – MoodyW

0
using System; 
using System.Collections.Generic; 

public class Student 
{ 
    public string studentName { get;set;} 
    public long studentID; 
    public int score1; 
} 

public class Test 
{ 
    public static void Main() 
    { 
     var students = new List<Student>(); 
     for (int i = 0; i < 3; i++) 
     { 
      Console.WriteLine("Student {0}", i + 1); 
      Console.Write("\t \t Name: "); 
      string input = Console.ReadLine(); 
      students.Add(new Student {studentName = input }); 
     }      
    } 
} 
0
Student[] student = new Student[N]; 
// the N is determined by a previous block of code. 
for (int i = 0; i < N; i++) 
{ 
    student[i] = new Student(); 
    check = false; // ignore this one. 
    Console.WriteLine("Student {0}", i + 1); 
    Console.Write("\t \t Name: "); 
    string input = Console.ReadLine(); 
    student[i].studentName = input; 
} 
0
for (int i = 0; i < N; i++) 
{ 
    check = false; // ignore this one. 
    Console.WriteLine("Student {0}", i + 1); 
    Console.Write("\t \t Name: "); 
    string input = Console.ReadLine(); 
you are missing line below. 
    student[i]= new student(); 
    student[i].studentName = input; 

}