VB计算程序输入框优化:限制空输入与非数字输入
解决方案
首先要解决输入校验和类型匹配的问题,避免空值或非数字输入导致报错,同时保证逻辑严谨。以下是修正后的代码:
Private Sub CheckAnswer() ' 先将界面文本框内容转换为可靠数值,提前排查文本框本身的无效内容 Dim num1 As Double, num2 As Double If Not Double.TryParse(txtnumber1.Text, num1) Or Not Double.TryParse(txtnumber2.Text, num2) Then MsgBox("界面文本框内容无效,请输入数字!") Exit Sub End If Dim correctAnswer As Double = num1 + num2 Dim userInput As String Dim userAnswer As Double Do While True userInput = InputBox("Please enter your answer") ' 校验输入是否为空 If String.IsNullOrEmpty(userInput) Then MsgBox("输入不能为空,请重新输入!") Continue Do End If ' 校验输入是否为有效数字 If Not Double.TryParse(userInput, userAnswer) Then MsgBox("请输入有效的数字!") Continue Do End If ' 校验答案正确性 If userAnswer = correctAnswer Then Exit Do Else MsgBox("Try again!!!!") End If Loop MsgBox("You are correct!") End Sub
核心改进说明:
- 用
Double.TryParse替代Val:Val遇到非数字会返回0,无法区分用户输入0还是无效内容,TryParse能准确判断输入是否为有效数值,同时输出转换结果。 - 提前校验界面文本框:避免文本框本身内容无效导致后续计算出错。
- 分层校验用户输入:先判空、再判数字有效性、最后比对答案,逻辑清晰,错误提示更精准。
- 类型统一:将用户输入转为数值后再和正确答案比较,避免字符串与数值的类型不匹配问题。
内容的提问来源于stack exchange,提问作者Cody Tong
相关产品推荐
相关产品推荐

