0

我一直在努力解决 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

提前谢谢你:)!

4

2 回答 2

0

在您的数字框上进行验证,以便它们必须是数字,而不仅仅是您的总和。

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
于 2013-09-15T09:25:02.367 回答
0

您正在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,但您可能希望依赖DecimalDouble考虑小数位)的转换,并使用数字类型执行数学运算。最后,我正在执行转换String(只是为了保持这个答案一致),尽管请记住 VB.NET 隐式执行此转换(从数字到字符串)没有任何问题。

于 2013-09-15T09:25:31.897 回答