2008-11-18 11 views
0

je fais un devoir de base qui ressemble à ceci:Moulage non valide lors de l'entrée

While input <> -1 
     input = CDbl(InputBox("Enter numbers to add, enter -1 to stop")) 
     values = values + input 
    End While 

Il fonctionne très bien jusqu'à ce que je presse « annuler » sur la zone de saisie. Ensuite, l'entrée de la chaîne est « », et je reçois l'erreur suivante:

System.InvalidCastException {"Conversion from string "" 
           to type 'Double' is not valid."} 

Je pense que je comprends l'erreur, je suis en train de convertir à l'aide CDbl une valeur non numérique. Ma question est ce qui serait une façon plus appropriée d'écrire ce code? Est-ce le code, ou juste un manque de gestion des erreurs?

Répondre

2

Essayez d'utiliser Double.TryParse

Dim value as Double = Nothing 
If Double.TryParse(InputBox("Enter numbers..."), value) Then 
    values = values + value 
End If 

Ma syntaxe peut être un peu loin, mais vous devriez avoir l'idée

4

Vous pouvez essayer Double.TryParse ou utiliser un bloc try catch avec Double.Parse. Comme c'est une tâche à faire, je vous laisse regarder sur MSDN.

0

Vous souhaitez également obtenir une erreur s'ils sont entrés dans autre chose qu'un double ou une valeur trop grande pour être stockée dans un double.

Les suggestions faites devraient cependant suffire, vous voulez essentiellement valider l'entrée de l'utilisateur avant de tenter de le lancer.

Questions connexes