У меня проблемы с консольным приложением. Я хочу проверить ввод пользователя и выполнить что-то в зависимости от того, что написал пользователь. Мой код выглядит примерно так:

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...
3
Oscar Lundberg 6 Сен 2016 в 16:19

4 ответа

Лучший ответ

Вы вызываете ReadLine несколько раз и поэтому несколько раз читаете из стандартного ввода. Попробуйте следующее:

var line = Console.ReadLine();

if (line == "ADD")
{
    //Add
} 
else if (line == "LIST")
{
    //DisplayList
}
else if (line == "SORT")
{
    //Sort
}
else 
{
    //DisplayErrorMsg
}
6
Nico 6 Сен 2016 в 13:21

Попытайтесь получить строку в строке и проверьте строку.

string line = Console.ReadLine();
if (line == "ADD")
{
    //Add
} 
else if (line == "LIST")
{
    //DisplayList
}
else if (line == "SORT")
{
    //Sort
}
else 
{
    //DisplayErrorMsg
}
2
Andrea 6 Сен 2016 в 13:22

Каждый раз, когда вы вызываете 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
}
2
arjabbar 6 Сен 2016 в 13:22
string readfromConsole = Console.ReadLine()
if(readfromConsole  == "ADD")
    {
        //Add
    } 
    else if (readfromConsole  == "LIST")
    {
        //DisplayList
    }
    else if (readfromConsole  == "SORT")
    {
        //Sort
    }
    else 
    {
        //DisplayErrorMsg
    }

Проблема, с которой вы столкнулись, заключается в том, что Console.readLine делает именно то, что он говорит, он читает новую строку. Это изменение сохраняет первое чтение и сравнивает с ним вместо того, чтобы каждый раз читать новую строку. Я надеялся, что это помогло

2
Ronan 6 Сен 2016 в 13:22