Console.ReadLine else-if语句中的意外行为

时间:2016-09-06 13:19:51

标签: c# .net console-application

我的控制台应用程序遇到了一些问题。 我想检查用户输入并根据用户写的内容执行某些操作。我的代码看起来像这样:

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

现在,当我在控制台中键入LIST时,我得到一个换行符,我必须再次键入LIST才能获得预期的行为,并且所有后续的else-if语句只会添加另一个换行符。 (以下示例) 我到处都看,但我看不出我做错了什么...... 请帮忙!

SORT
SORT
SORT
//Sorting...

4 个答案:

答案 0 :(得分:6)

您多次调用ReadLine,因此您从stdin中多次读取。请尝试以下方法:

var line = Console.ReadLine();

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

每次拨打Console.ReadLine()时,都会等待用户输入。

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

然后执行if,else检查该变量。

var userInput = Console.ReadLine();

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

答案 3 :(得分:2)

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

您遇到的问题是Console.readLine完全按照它所说的读取新行。所以这个改变的作用是保存第一次读取并与之进行比较,而不是每次都读取新行。我希望这有帮助

相关问题