Как предотвратить нечисловой ввод в VB.NET? - PullRequest
4 голосов
/ 05 ноября 2010

Я работаю над программой, которая требует от пользователя ввода целого числа.Как я могу запретить пользователю вводить нечисловое значение?Я пытался использовать функцию IsNumeric (), но я получаю сообщение об ошибке, прежде чем я могу использовать его.Я получаю сообщение об ошибке в console.read, прежде чем я могу вызвать функцию IsNumeric ().Вот мой код:

Dim num As Integer

    Console.Write("enter num:")
    num = Console.ReadLine 

    If IsNumeric(num) = True Then
        Console.WriteLine("valid. num = " & num)
    Else
        Console.WriteLine("invalid")
    End If

Любая помощь с благодарностью.

Ответы [ 5 ]

8 голосов
/ 05 ноября 2010

Попробуйте это:

Dim num As Integer

Console.Write("enter num:")
Dim input = Console.ReadLine

If Integer.TryParse(input, num) Then
    Console.WriteLine("valid. num = " & num)
Else
    Console.WriteLine("invalid")
End If
5 голосов
/ 05 ноября 2010

Это именно та ситуация, для которой предназначена Integer.TryParse().TryParse вернет false, если тестируемая строка не может быть преобразована в целое число.

1 голос
/ 05 ноября 2010

Скорее попробуйте что-то вроде:

Dim num as Integer
Console.Write("Enter num: ")

While (Not (Integer.TryParse(num, Console.ReadLine())))
    Console.WriteLine("Please enter an Integer only: ")
End While

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

0 голосов
/ 05 ноября 2010

В C # извините ...

using System;
    class Program
    {
        static void Main(string[] args)
        {
            int a = GetNumericInput();
            Console.WriteLine("Success, number {0} entered!",a);
            Console.Read();
        }

        private static int GetNumericInput()
        {
            int number;
            string input;
            bool first = true;
            do
            {
                if (!first)
                {
                    Console.WriteLine("Invalid Number, try again");
                }
                Console.WriteLine("enter a number");
                input = Console.ReadLine();
                first = false;
            } while (!int.TryParse(input, out number));
            return number;
        }
    }
0 голосов
/ 05 ноября 2010

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

...