2008-11-18 4 views
0

Я делаю основное домашнее задание, которое выглядит следующим образом:Invalid Cast во время ввода

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

Он отлично работает, пока не нажать «Отмена» на поле ввода. Затем входная строка «», и я получаю следующее сообщение об ошибке:

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

Я думаю, что я понимаю эту ошибку, я пытаюсь преобразовать с помощью CDbl нечислового значения. Мой вопрос в том, что было бы более правильным способом написать этот код? Это код или просто отсутствие обработки ошибок?

ответ

2

Попробуйте использовать Double.TryParse

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

Мой синтаксис может быть немного выключен, но вы должны получить представление

4

Вы можете попробовать использовать Double.TryParse или использовать блок catch try с Double.Parse. Поскольку это домашнее задание, я позволю вам посмотреть их на MSDN.

0

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

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

Смежные вопросы