2010-11-05 38 views
4

Je travaille sur un programme qui nécessite que l'utilisateur saisisse un nombre entier. Comment empêcher l'utilisateur d'entrer une valeur non numérique? J'ai essayé d'utiliser la fonction IsNumeric() mais j'obtiens une erreur avant de pouvoir l'utiliser. Je reçois l'erreur à la console.read, avant que je puisse appeler la fonction IsNumeric(). Voici mon code:Comment empêcher les entrées non numériques dans VB.NET?

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 

Toute aide est grandement appréciée.

+0

Pouvez-vous être plus précis sur l'erreur? – vcsjones

+1

Utilisez-vous un contrôle d'entrée comme un TextBox ou est juste une application de console? – Marcote

Répondre

7

Essayez ceci:

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 
0

Vous pouvez lire une chaîne, puis tenter de la convertir en entier. Trap toutes les exceptions produites par la conversion, pour gérer les entrées non numériques.

5

C'est exactement la situation à laquelle Integer.TryParse() a été conçu. TryParse retournera false si la chaîne que vous testez ne peut pas être convertie en entier.

0

en C# désolé ...

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

Plutôt essayer quelque chose comme:

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

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

La méthode TryParse tente d'analyser la valeur d'entrée et retourne un faux lorsque la valeur n'a pas pu être analysée pour le type dit. Le code ci-dessus demandera l'entrée utilisée jusqu'à ce qu'ils entrent un nombre entier.