2016-01-12 2 views
0

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

Так, например, это справедливо вход:

test-string 12345 
hello world 

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

Console.WriteLine("Parameters separated by a space (NAME - VALUE). A blank line ends input."); 
var parameters = new Dictionary<string, string>(); 

while (Console.ReadLine() != String.Empty) 
{ 
    string input = Console.ReadLine(); 
    string[] splitInput = input.Split(' '); 

    if (splitInput.Count() < 2) 
    { 
     Console.WriteLine("Invalid input."); 
    } 
    else 
    { 
     parameters.Add(splitInput[0], splitInput[1]); 
    } 
} 

Я не уверен, где это происходит, я думаю, что это связано с < 2, но я не знаю, как еще проверить количество элементов. Как правильно разрешить ввод нескольких значений при выходе из пустой строки?

+2

используйте отладчик, и вы быстро увидите, где вы ошибаетесь в своей логике. – MethodMan

+1

Предлагаю вам изменить цикл 'while' на' while (input = Console.ReadLine()! = String.Empty) ', чтобы избежать пропусков вход. – Tim

ответ

0

Вы используете консоль Convert.ReadLine() внутри цикла while. Любая пустая строка, которая предоставляется там, затем разбивается на пробел, в результате получается массив строк с 0 элементами. Затем он сразу же попадает в «Недопустимый ввод».

Смежные вопросы