3 Stimmen

Frage zu Console.ReadLine() in C#

    static void Main()
    {
        string str;
        str = Console.ReadLine();
        while (str != null)//HERE!
        {
            str = str.Remove(0, 1);
            str = str.Remove(str.Length - 1, 1);
            string[] value = str.Split(',');
            int[] intval = new int[value.Length];
            for (int i = 0; i < value.Length; ++i)
            {
                bool re = int.TryParse(value[i], out intval[i]);
                Console.WriteLine(intval[i]);
            }
            str = Console.ReadLine(); 
        }
    }

Hallo, in dem obigen Programm möchte ich mit "str!=null" beurteilen, ob in der Konsole etwas nicht gelesen wurde.

Die Funktion ReadLine() gab jedoch ein "" anstelle von Null zurück, und das Programm kann in die while-Schleife geraten und ein falsches Ergebnis erzeugen.

Wie kann ich es reparieren?

8voto

DevelopingChris Punkte 38437
while(!string.IsNullOrEmpty(str))

Prüfen Sie beides mit der eingebauten Methode

Wenn er leer zurückkommt, haben sie gerade die Eingabetaste gedrückt, und du hast deinen Sentinel so oder so, du kannst also daran scheitern.

2voto

Ed S. Punkte 118985

Aus den Unterlagen:

Wenn das Zeichen STRG+Z gedrückt wird, während die Methode Eingaben von der Konsole liest, gibt die Methode eine Null-Referenz zurück (Nothing in Visual Basic). Dadurch kann der Benutzer weitere Tastatureingaben verhindern, wenn die ReadLine-Methode in einer Schleife aufgerufen wird.

Sie können also durch den Aufruf von ReadLine() tatsächlich eine Null-Referenz zurückerhalten. Die Methode String.IsNullOrEmpty überprüft jedoch beide Fälle für Sie.

0voto

Gishu Punkte 130442

ReadLine blockiert, bis der Benutzer die Eingabetaste drückt. Wenn Sie also einfach die Eingabetaste drücken, erhalten Sie eine leere Zeichenfolge.

0voto

Arsen Mkrtchyan Punkte 48540
 while (!string.IsNullOrEmpty(str))
{
...
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X