Проверка того, что введенное значение является целым числом - PullRequest
1 голос
/ 27 марта 2019

Мне нужен метод проверки, который гарантирует, что введенное значение является действительным, оно должно быть целым числом (может содержать отрицательное значение) и не должно быть пустым. Я написал этот код, однако не правильно, может кто-нибудь помочь мне, пожалуйста. Спасибо

If (b <> Integer Or " ") Then
            Console.WriteLine("Value entered must be a number")
        End If


new code:
Line98:
        Console.WriteLine("Please input the value of, B:")
        b = Console.ReadLine()
        If Not Integer.TryParse(b, New Integer) Then
            Console.WriteLine("Value entered must be a number")
            GoTo Line98
        End If

поэтому я использовал оператор выбора, и если пользователь вводит «abckak» любые нечисловые данные, я получаю сообщение об ошибке Необработанное исключение: System.InvalidCastException: преобразование из строки «gakjdg» в тип «Integer» недопустимо.

как это можно исправить, это быстрый пример моего кода

 Console.WriteLine("..........Main Menu..........")
            Console.WriteLine("Please input 1 ")
            Console.WriteLine("Please input 2")
            Console.WriteLine("Please input 3 ")
            Console.WriteLine("Please input 4 ")
            Console.WriteLine("Please input 5 for Help")
            Console.WriteLine("Please input 6 to Exit")

            Console.WriteLine("Please enter your choice: ")

            Choice = Console.ReadLine()
            Select Case Choice

case1; etc

Case Else
                    Console.WriteLine("Error: " & Choice & " is not a option, Please try again")

1 Ответ

0 голосов
/ 27 марта 2019

Изучите Integer.TryParse , он попытается проанализировать строку в целое число, если сможет, если он не может , то не выдаст исключение ...

 Dim b As Integer
 Console.WriteLine("Please input the value of, B:")            
 If Not Integer.TryParse(Console.ReadLine(), b) Then
    Console.WriteLine("Value entered must be a number")
    GoTo Line98
 End If

Если он может анализировать ввод от пользователя, тогда b будет значением из анализа, в противном случае значение b будет по-прежнему 0 ...

Редактировать за комментарий

Dim b As Integer
Do Until b > 0
    Console.WriteLine("Please input the value of, B:")            
    If Not Integer.TryParse(Console.ReadLine(), b) OrElse b <= 0 Then
      Console.WriteLine("Value entered must be a number and not equal 0")
      GoTo Line98
    End If
 Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...