首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

未处理的异常:System.InvalidCastException 从字符串’'到类型’Integer'的转换无效。

2014-01-28 
VB.NET,遇到以下问题,求教: 代码如下 Module HelloVBSub Main()While TrueDim InputNum As Integer 0Inp

 VB.NET,遇到以下问题,求教:
代码如下
Module HelloVB
  Sub Main() 
  While True
  Dim InputNum As Integer = 0
  InputNum = CInt(InputBox("请输入一个整数,要结束请输入-1"))
  If InputNum = -1 Then
  Exit While
  End If
  MsgBox("你输入的结果是: " & InputNum)
  End While
  End Sub
End Module

异常如下:
未处理的异常:  System.InvalidCastException: 从字符串“”到类型“Integer”的转换
无效。 ---> System.FormatException: 输入字符串的格式不正确。
  在 Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Valu
e, NumberFormatInfo NumberFormat)
  在 Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
  --- 内部异常堆栈跟踪的结尾 ---
  在 Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)

哪位能解释一下这个异常是什么意思么?

------解决方法--------------------------------------------------------
InputBox初始值为“”,不能转换成整形。
改成这样试试:
InputNum = CInt(InputBox("请输入一个整数,要结束请输入-1","","0"))
------解决方法--------------------------------------------------------
CInt(InputBox("请输入一个整数,要结束请输入-1", "", 1))
------解决方法--------------------------------------------------------
  Sub Main()
  While True
  Dim InputNum As Integer = 0
  Dim InputStr As String = InputBox("请输入一个整数,要结束请输入-1")
  If IsNumeric(InputStr) Then
  InputNum = CType(InputStr, Integer)
  If InputNum = -1 Then
  Exit While
  End If
  Else
  InputNum = 0
  End If
  MsgBox("你输入的结果是: " & InputNum)
  End While
  End Sub

------解决方法--------------------------------------------------------
最简单的方法:
将Dim InputNum As Integer = 0 这句改为:Dim InputNum As String = "" 就行了,不必上面那么繁琐。
这样的话,你的InputBox输入框中无论输入什么字符,程序不仅不会报错,还会因为返回值InputNum为String类型而变得很好对其判断和处理!         

热点排行