Как посмотреть, если пользователь не ввел правильную запись в C # - PullRequest
0 голосов
/ 03 октября 2018

Мне было интересно, как вывести, если пользователь ввел неправильную запись в коде ниже.Например, если они вводили строковые символы или комбинацию строковых символов и числа.Прямо сейчас он просто ломает программу, если введена неверная запись.Пожалуйста, оставьте ответ на вопрос, что является самым простым способом, так как я довольно новичок в программировании!

 Console.Write("Please enter the persons age: ");
 int age = int.Parse(Console.ReadLine());
 if(age == 17)
 {
     Console.WriteLine("That's to bad! You will have to wait until next year!");
 }    
 else if (age < 18)
 {
     Console.WriteLine("That's to bad! You will have to wait a couple years until you can come in!");
 }
 else
 {
     Console.WriteLine("You are of age to be here.");
 }

 while (true)
 {
     Console.Write("Please enter the next persons age: ");
     age = int.Parse(Console.ReadLine());

     if (age == 17)
     {
         Console.WriteLine("That's to bad! You will have to wait until next year!");
     }
     else if (age < 18)
     {
         Console.WriteLine("That's to bad! You will have to wait a couple years until you can come in!");
     }
     else if (age > 18)
     {
          Console.WriteLine("You are of age to be here.");
     }
     else
     {
          Console.WriteLine("Please enter a valid entry");
     }
 }

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вы можете сделать:

int age;

if (int.TryParse(Console.ReadLine(), out age))
{
    if (age > 17)
    {
        Console.WriteLine("That's too bad! You will have to wait until next year!");
    }
    // etc
}
else
{
    Console.WriteLine("Please enter a valid input");
}

Объяснение :

int.TryParse - это метод, который принимает string и пытается преобразовать его в int, если преобразование прошло успешно, он присваивает результат переменной age и возвращает true, в результате чего программа входит в блок if, в противном случае возвращается false, и программа входит в блок else.Переменная age назначается с использованием функции выходных параметров C # , которая представляет собой способ передачи переменной из за пределы в метод, в то время как последний обещает, что он присвоит некоторое значениеэто.

0 голосов
/ 03 октября 2018

Вы можете попытаться использовать функцию int.TryParse, чтобы проверить, введен ли пользователь или нет, число, которое вернет значение bool

  • true пользовательский ввод - это число.
  • false пользовательский ввод не является числом.

Я бы использовал do ... while вместо while, потому что это может сделать ваш код более понятным.

int age;
do {
    Console.Write("Please enter the persons age: ");

    if (!int.TryParse(Console.ReadLine(), out age)){
        Console.WriteLine("Please enter a valid entry");
    }
    else if (age == 17)
    {
        Console.WriteLine("That's to bad! You will have to wait until next year!");
    }
    else if (age < 18)
    {
        Console.WriteLine("That's to bad! You will have to wait a couple years until you can come in!");
    }

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