如何防止VB.NET中的非数字输入?

时间:2010-11-05 01:41:15

标签: vb.net user-input validation

我正在开发一个需要用户输入整数的程序。如何阻止用户输入非数字值?我尝试使用IsNumeric()函数,但在使用它之前出现错误。在我可以调用IsNumeric()函数之前,我在console.read上收到错误。这是我的代码:

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 个答案:

答案 0 :(得分:8)

试试这个:

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

答案 1 :(得分:5)

这正是Integer.TryParse()设计的情况。如果您测试的字符串无法转换为整数,则TryParse将返回false。

答案 2 :(得分:1)

而是尝试类似:

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。上面的代码会询问用于输入的内容,直到它们输入一个整数。

答案 3 :(得分:0)

您可以读取字符串,然后尝试将其转换为整数。捕获转换产生的任何异常,以处理非数字输入。

答案 4 :(得分:0)

在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;
        }
    }
相关问题