2016-09-06 99 views
3

我在控制台应用程序中遇到了一些麻烦。 我想检查用户输入并根据用户写什么执行一些操作。我的代码看起来是这样的:Console.ReadLine在else语句中的意外行为 - 如果语句

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

现在,当我在控制台类型列表中,我得到一个线断了,我不得不再次类型列表中得到预期的行为,及以后的其他-if语句只是添加另一个换行符。 (下面的例子) 我已经看到无处不在,但我看不到我做错了什么... 请帮忙!

SORT 
SORT 
SORT 
//Sorting... 

回答

6

要调用ReadLine多次,因此你阅读从标准输入多次。请尝试以下操作:

var line = Console.ReadLine(); 

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

当然......感谢大家的快速反应! –

2

尝试在字符串中获取行,然后测试字符串。

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

每次通话时间Console.ReadLine()它会等待用户输入。

将从运行Console.ReadLine()返回的值分配给变量。

然后做你的if,否则检查该变量。

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 
    } 

您遇到的问题是,到Console.ReadLine不正是它说,它读取一个新行。所以这个改变是保存了第一次阅读并与之比较,而不是每次都阅读新的一行。我希望这可以帮助