【问题标题】:How to prevent non-numeric input in VB.NET?如何防止VB.NET中的非数字输入?
【发布时间】:2020-03-19 11:24:37
【问题描述】:

我正在开发一个要求用户输入整数的程序。如何防止用户输入非数字值?我尝试使用 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

非常感谢任何帮助。

【问题讨论】:

  • 您能否更具体地了解该错误?
  • 您是在使用像 TextBox 这样的输入控件还是只是一个控制台应用程序?

标签: vb.net user-input validation


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不如试试这样的:

      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。上面的代码会询问 used for 输入,直到他们输入一个整数。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          在 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;
                  }
              }
          

          【讨论】:

            猜你喜欢
            • 2012-12-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-26
            • 2014-06-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多