VB.Net从字符串到双精度的转换
我的程序中有一个错误,当文本框中没有输入时,如果用户按下检查(计算)按钮,程序将显示此错误:“从字符串“”转换为类型“Double”无效。”我想解决此问题,但我不确定如何进行转换。我想可能是CType,但我听到了解析的说法。我该怎么办?文本框称为mskTxtInput,按钮对象称为btnCheck,负责所有计算和处理 更新:这是我的代码,除了解析方法,所以希望这有点帮助 私有子BTN检查\单击(ByVal发送者作为System.Object,ByVal e作为System.EventArgs)处理BTN检查。单击 pic1.可见=假“隐藏图片” pic1.Image=My.Resources.A pic2.Image=My.Resources.FVB.Net从字符串到双精度的转换,vb.net,string,textbox,type-conversion,Vb.net,String,Textbox,Type Conversion,我的程序中有一个错误,当文本框中没有输入时,如果用户按下检查(计算)按钮,程序将显示此错误:“从字符串“”转换为类型“Double”无效。”我想解决此问题,但我不确定如何进行转换。我想可能是CType,但我听到了解析的说法。我该怎么办?文本框称为mskTxtInput,按钮对象称为btnCheck,负责所有计算和处理 更新:这是我的代码,除了解析方法,所以希望这有点帮助 私有子BTN检查\单击(ByVal发送者作为System.Object,ByVal e作为System.EventArgs)处
Dim value As Double
If Double.TryParse(mskTxtInput.Text, value) = Then
MsgBox("parsing success") ' parsing worked, so use the value in here
Else
MsgBox("parsing failed") ' parsing failed, so alert the user to that fact
End If
If radAdd.Checked = True Then
totalNum = num1 + num2
End If
If radSub.Checked = True Then
totalNum = num1 - num2
End If
If radMulti.Checked = True Then
totalNum = num1 * num2
End If
If mskTxtInput.Text = totalNum Then
lblAns.Text = ("Correct!")
lblAns2.Text = ("Answer is " & totalNum)
pic1.Visible = True
wins = wins + 1
nScore = wins
Else
lblAns.Text = ("Incorrect")
lblAns2.Text = ("Answer should be " & totalNum)
pic2.Visible = True
End If
attempts = attempts + 1
If attempts = 5 Then
MessageBox.Show("Game Finished! ", "End Of Game", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
lblAns.Text = ("You scored " & wins & " Out of 5")
btnSpin.Enabled = False
pic1.Visible = False
pic2.Visible = False
lblAns2.Text = ""
lblAns2.Text = "Play again?"
btnCheck.Enabled = False
btnNew.Enabled = True
attempts = 0
wins = 0
End If
mskTxtInput.Clear()
mskTxtInput.Focus()
End Sub
作为整数的dim-iVar
作为字符串的dim sStr
sstr=“”
ivar=val(sstr)将ivar设置为整数
作为字符串的dim sStr
sstr=“”
ivar=val(sstr)尝试使用
差不多
Dim s As String
Dim result As Double
Dim returnValue As Boolean
returnValue = Double.TryParse(s, result)
尝试使用而不是
差不多
Dim s As String
Dim result As Double
Dim returnValue As Boolean
returnValue = Double.TryParse(s, result)
使用静态方法。如果返回true,则解析成功,您可以继续操作。如果返回false,则解析未成功,您应该显示错误消息(如果需要,请使用
MessageBox
)并中止操作。使用静态方法。如果返回true,则解析成功,您可以继续操作。如果返回false,则解析未成功,您应该显示错误消息(如果需要,请使用MessageBox
)并中止操作。使用TryParse
方法进行解析,以避免在解析失败时出现异常:
Dim value As Double
If Double.TryParse(mskTxtInput.Text, value) Then
' parsing worked, so use the value in here
Else
' parsing failed, so alert the user to that fact
End If
使用
TryParse
方法进行解析,以避免在解析失败时出现异常:
Dim value As Double
If Double.TryParse(mskTxtInput.Text, value) Then
' parsing worked, so use the value in here
Else
' parsing failed, so alert the user to that fact
End If
请在出现此问题的地方共享一些代码。这与您的问题没有直接关系,但看起来您没有使用
选项Strict
。我建议您启用该选项:编译器随后会生成有关危险代码的警告,这将从长远来看节省您的时间。请在出现此问题的地方共享一些代码。这与您的问题没有直接关系,但看起来您没有使用选项Strict
。我建议你打开它:然后编译器会生成关于危险代码的警告,从长远来看这会节省你的时间。嘿!我使用了你的代码,但在messagebox中添加了“解析通过”和“解析失败”的选项,并不断收到“解析失败”的消息。我可以清楚地显示代码,希望它能有所帮助@William Mc:您在发布的代码中添加了一个=
操作符,然后在之前添加了一个,因此它不会运行。去掉那个,它就工作了。我已经验证了如果解析成功,代码会显示第一个消息框。我去掉了=运算符,但它仍然不起作用:(VS总是以黄色突出显示这一行:如果mskTxtInput.Text=totalNum,那么这说明解析起作用了:如果mskTxtInput.Text=”“,那么Dim值为Double Double.TryParse(mskTxtInput.Text,value)MsgBox(“解析已完成”)'解析已完成,因此请使用此处Else中的值MsgBox(“解析失败”)'解析失败,因此请提醒用户该事实If@WilliamMc:您只是检查输入是否为空。由于您没有对TryParse
方法的返回值执行任何操作,因此您忽略了解析是否有效。即使解析失败,消息框也始终显示。嘿!我使用了您的代码,但很生气e messagebox显示“解析通过”和“解析失败”的消息,并不断收到“解析失败”我可以很明显地显示代码,希望它能有所帮助!@William Mc:您在发布的代码中添加了一个=
操作符,因此它不会运行。删除该操作符后,它就会工作。我已经验证了如果解析成功,代码会显示第一个消息框。我删除了=操作符,但它仍然不工作:(VS始终以黄色突出显示此行:如果mskTxtInput.Text=totalNum,则说明解析已完成:如果mskTxtInput.Text=”“,则Dim值为Double Double.TryParse(mskTxtInput.Text,value)MsgBox(“解析已完成”)”解析已完成,因此请使用此处Else MsgBox中的值(“解析失败”)“解析失败,因此请提醒用户该事实结束If@WilliamMc:您只是检查输入是否为空。由于您没有对TryParse
方法的返回值执行任何操作,因此忽略解析是否有效。即使解析失败,消息框也始终显示。