Проверка ввода и типа пользователя - PullRequest
2 голосов
/ 06 декабря 2009

Я разработал цикл проверки ввода в C #, и я хотел бы, чтобы он мог проверять правильность формата ввода. Я не уверен, но я думаю, что мой разработанный цикл не проверяет тип ввода, только то, что вводится в char. Я знаю, что могу использовать блок try-catch, но разве вы не должны использовать исключения только для исключительных ситуаций? Это не исключительная ситуация, потому что я ожидаю, что пользователь введет неправильное значение.

Вопрос:

Есть ли способ, которым я мог бы перепроектировать этот цикл, чтобы он также проверял допустимый ввод type ?

Код:

do
{
    Console.Write("Do you wish to enter another complex number?: (Y or N)");
    response = char.Parse(Console.ReadLine());
    response = char.ToUpper(response);

    if (response != 'Y' && response != 'N')
        Console.WriteLine("You must respond Y or N!");

} while (response != 'Y' && response != 'N');

Ответы [ 3 ]

2 голосов
/ 06 декабря 2009

Ну Console.Readline():

Считывает следующую строку символов из стандартного потока ввода.

Таким образом, ваши данные будутвведите System.String.

Единственная другая проверка, которую вы можете сделать, - это проверить, что возвращаемая строка имеет длину 1, поэтому вы знаете, что у вас введен правильный формат.Вам не нужно char.Parse, поскольку элементы строки имеют тип char.

1 голос
/ 26 марта 2010

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

response = Console.ReadLine(); 
if (response.ToUpper() == "Y") {...}

Если вы хотите узнать, может ли ввод привести к нужному вам типу (например, char), вы всегда можете сделать (для каждого типа значения):

char input;
bool IsValid = char.TryParse(Console.ReadLine().ToUpper(), out input);
if (IsValid) 
{
    Console.WriteLine("You entered the following char: " + input);
}

Надеюсь, это поможет.

0 голосов
/ 26 марта 2010

Еще одна полезная проверка в такой ситуации

Проверяет наличие нулевой строки "" (пустая строка) и обрезает лишние пробелы. Строка I.E как эта "" становится этой ""

if (String.IsNullOrEmpty (response.Trim () && response! = 'Y' && response! = 'N'))
{ Console.WriteLine («Вы должны ответить Y или N!»); }

И в большинстве случаев проще использовать строки над символом в самых простых ситуациях проверки ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...