Расчет из полей ввода с сообщением об ошибке для ввода букв

Я боролся с неприятной и неприятной проблемой в Visual Basic (я, как вы, наверное, заметили, новичок). Проблема заключается в системе сообщений об ошибках, когда вместо цифр вводятся буквы. Я получаю "не могу преобразовать из целого числа в строку.

Любая помощь по этому поводу будет очень признательна.

Вот мой код:

    Dim number1, number2 As Integer
    Dim sum As String

    number1 = InputBox("first value:")
    number2 = InputBox("second value:")
    sum = number1 + number2

    If IsNumeric(sum) Then
        MsgBox("The sum of the numbers " & number1 & " and " & number2 & " is: " & sum)
    ElseIf Not IsNumeric(sum) Then
        MsgBox("You may only type numbers into the fields!, trie again")
    End If

Заранее спасибо :)!


person Freshman    schedule 15.09.2013    source источник


Ответы (2)


Вы делаете Type преобразование неправильно. Улучшенный код:

Dim input1, input2 As String

input1 = InputBox("first value:")
input2 = InputBox("second value:")

If IsNumeric(input1) And IsNumeric(input2) Then
    MsgBox("The sum of the numbers " & input1 & " and " & input2 & " is: " & (Convert.ToInt32(input1) + Convert.ToInt32(input2)).ToString())
Else
    MsgBox("You may only type numbers into the fields!, try again")
End If

InputBox возвращает строки, которые вы неявно преобразовываете в Integer, связывая их с переменными целочисленного типа, таким образом, вы вызываете ошибку при вводе нечисловых значений. Лучший способ избежать проблем - всегда полагаться на правильный Тип, как показано в приведенном выше коде: входные данные являются строками, но IsNumeric принимает в качестве входных данных именно строки. После подтверждения правильных входных данных выполняется преобразование в соответствующий тип (Integer, но вы можете полагаться на Decimal или Double для учета десятичных позиций), и математическая операция выполняется с числовыми типами. Наконец, я выполняю преобразование в String (просто для того, чтобы этот ответ был согласованным), хотя имейте в виду, что VB.NET выполняет это преобразование (из числа в строку) неявно без каких-либо проблем.

person varocarbas    schedule 15.09.2013
comment
Ах! Теперь я понимаю, не думал, что это можно сделать так гладко. Большое спасибо, это сделало свое дело :) Хорошего дня! - person Freshman; 15.09.2013
comment
@ user1981481 без проблем. То же самое и для вас. - person varocarbas; 15.09.2013

Поместите валидацию в свои числовые поля, чтобы они были числовыми, а не только вашей суммой.

If Not IsNumeric(number1) Then
  MsgBox("You may only type numbers into the fields!, try again")
End If

If Not IsNumeric(number2) Then
  MsgBox("You may only type numbers into the fields!, try again")
End If
person Jay    schedule 15.09.2013
comment
Тем не менее, у меня возникла та же проблема, потому что мои значения были неправильно установлены на целое число, потребуется некоторое время, прежде чем я разберусь с этим: P Спасибо, и хорошего дня :) - person Freshman; 15.09.2013