2016-09-06 4 views
3

Ich habe einige Probleme mit meiner Konsolenanwendung. Ich möchte die Benutzereingabe überprüfen und etwas ausführen, je nachdem, was der Benutzer geschrieben hat. Mein Code sieht in etwa wie folgt aus:Console.ReadLine unerwartetes Verhalten in else-if-Anweisung

if(Console.ReadLine() == "ADD") 
{ 
    //Add 
} 
else if (Console.ReadLine() == "LIST") 
{ 
    //DisplayList 
} 
else if (Console.ReadLine() == "SORT") 
{ 
    //Sort 
} 
else 
{ 
    //DisplayErrorMsg 
} 

Jetzt, als ich LIST in der Konsole eingeben, bekomme ich einen Zeilenumbruch, und ich habe LIST, um erneut ein erwartetes Verhalten zu bekommen, und alle folgenden else-if-Anweisungen nur Fügen Sie einen weiteren Zeilenumbruch hinzu. (Beispiel unten) Ich habe überall hingeschaut, aber ich kann nicht sehen, was ich falsch gemacht habe ... Bitte helfen!

SORT 
SORT 
SORT 
//Sorting... 

Antwort

6

Du Aufruf ReadLine mehrere Male und deshalb lesen Sie mehrmals vom stdin. Versuchen Sie Folgendes:

var line = Console.ReadLine(); 

if (line == "ADD") 
{ 
    //Add 
} 
else if (line == "LIST") 
{ 
    //DisplayList 
} 
else if (line == "SORT") 
{ 
    //Sort 
} 
else 
{ 
    //DisplayErrorMsg 
} 
+0

Natürlich ... Danke an euch alle für die blitzschnelle Antwort! –

2

Versuchen Sie, Zeile in einer Zeichenfolge zu erhalten, und testen Sie die Zeichenfolge.

string line = Console.ReadLine(); 
if (line == "ADD") 
{ 
    //Add 
} 
else if (line == "LIST") 
{ 
    //DisplayList 
} 
else if (line == "SORT") 
{ 
    //Sort 
} 
else 
{ 
    //DisplayErrorMsg 
} 
2

Jedes Mal, wenn Sie Console.ReadLine() nennen es wird für Benutzereingaben warten.

Weisen Sie den Wert, der von Console.ReadLine() zurückgegeben wird, einer Variablen zu.

Dann tun Sie, wenn, sonst überprüft diese Variable.

var userInput = Console.ReadLine(); 

if(userInput == "ADD") 
{ 
    //Add 
} 
else if (userInput == "LIST") 
{ 
    //DisplayList 
} 
else if (userInput == "SORT") 
{ 
    //Sort 
} 
else 
{ 
    //DisplayErrorMsg 
} 
2
string readfromConsole = Console.ReadLine() 
if(readfromConsole == "ADD") 
    { 
     //Add 
    } 
    else if (readfromConsole == "LIST") 
    { 
     //DisplayList 
    } 
    else if (readfromConsole == "SORT") 
    { 
     //Sort 
    } 
    else 
    { 
     //DisplayErrorMsg 
    } 

Das Problem, das Sie haben, ist, dass Console.ReadLine genau das tut, was sie sagt, es eine neue Zeile liest. Was diese Änderung bewirkt, ist, dass sie das erste Lesen speichert und vergleicht, anstatt jedes Mal eine neue Zeile zu lesen. Ich hoffte das half