2016-12-02 5 views
0

Dieser Eingang des Code Schleife, bis EOF ist:C# - Wiederholungs Eingang bis EOF

string input; 
List<string> s = new List<string>(); 
while((input = Console.ReadLine()) != null && input != ""){ 
    input = Console.ReadLine(); 
    s.Add(input); 

} 

foreach(string h in s){ 
    Console.WriteLine(h); 
} 

Der Eingang hält Looping jede Zeile, bis ich 'Strg-Z' gedrückt. Jeder Eingang wird in Liste s zugewiesen, aber es scheint, dass nicht alle Eingänge in Liste s zugewiesen sind.

output:

enter image description here

Der Ausgang sollte sein:

a

b

c

d

Danke für Hilfe;

+0

Weil Sie ReadLine zweimal für jede Schleifeniteration aufrufen. – dman2306

Antwort

2

Sie haben zweimal für jede Schleife Console.ReadLine() aufgerufen. Die einfache Lösung ist, den zweiten Anruf zu entfernen.

string input; 
List<string> s = new List<string>(); 
while((input = Console.ReadLine()) != null && input != ""){ 
    s.Add(input); 
} 

foreach(string h in s){ 
    Console.WriteLine(h); 
} 

Sie können auch die while-Anweisung wie folgt schreiben:

while (!string.IsNullOrEmpty(input = Console.ReadLine())){ 
     s.Add(input); 
    } 
+0

Danke. Es ist wirklich einfach, ich habe die ReadLine zwar in Statemen ausgeführt, aber nach der Eingabe nicht innerhalb von ausgeführt. –

1

den zweiten Aufruf readline Entfernen sollte ausreichen.