我即将完成我的大学项目,所以我真的很想完成这个!在显然完成所有硬位并运行程序之后,错误开始出现。到目前为止,这是我无法解决的问题。下面是错误日志的链接 http://pastebin.com/8FMjUFF5 另外,下面你可以看到我试图做的那段代码:
Public Sub Pizza()
If Pizza_BaseTextBox.Text = 1 Then
PizzaBase = 2.99
ElseIf Pizza_BaseTextBox.Text = 2 Then
PizzaBase = 4.99
ElseIf Pizza_BaseTextBox.Text = 3 Then
PizzaBase = 6.99
ElseIf Pizza_BaseTextBox.Text = 4 Then
PizzaBase = 8.99
Else
MsgBox("Please enter the correct number corresponding the pizza size you desire! See instructions")
End If
If CInt(Topping1TextBox.Text) > 0 And CInt(Topping1TextBox.Text) < 12 Then 'Error here
Topping1 = 0.5
Else
Topping1 = 0
End If
If CInt(Topping2TextBox.Text) > 0 And CInt(Topping2TextBox.Text) < 12 Then
Topping2 = 0.5
Else
Topping2 = 0
End If
If CInt(Topping3TextBox.Text) > 0 And CInt(Topping3TextBox.Text) < 12 Then
Topping3 = 0.5
Else
Topping3 = 0
End If
If CInt(Topping4TextBox.Text) > 0 And CInt(Topping4TextBox.Text) < 12 Then
Topping4 = 0.5
Else
Topping4 = 0
End If
If CInt(Topping5TextBox.Text) > 0 And CInt(Topping5TextBox.Text) < 12 Then
Topping5 = 0.5
Else
Topping5 = 0
End If
PizzaTotal = PizzaBase + Topping1 + Topping2 + Topping3 + Topping4 + Topping5
End Sub
如果我能得到一些帮助,我将非常感激。
非常感谢您的帮助和支持,欢迎提出所有意见。
此致
何塞·罗德里格兹答案 0 :(得分:2)
CInt(Topping1TextBox.Text) > 0
如果TextBox为空CInt
将抛出异常。由于它是用户输入,因此总是存在空白或包含&#34; ziggy&#34;而不是数字。
由于它是用户输入,我们可以立即测试和转换它:
Dim tmp As Integer
If Integer.TryParse(Topping1TextBox.Text, tmp) = False Then
' display error message that the value is invalid
Else
If tmp > 0 And tmp < 12 Then
Topping1 = 0.5
Else
Topping1 = 0
End If
End If
' repeat pattern for the others
Integer.TryParse
将返回一个布尔值,指示字符串/文本是否能够被解析为传递的变量。如果为True,则变量将保留该值。所有数据类型都具有此功能(Decimal.TryParse
等),并且还有其他类似的功能,例如Integer.Parse
和Convert.ToInt32
用于不同的情况。
当前的程序逻辑也没有考虑&#34; -1&#34;在文本框中。通常,对于类似这样的事情,NumericUpDown是更好的选择,因为它会强制输入在给定范围和数字中。
答案 1 :(得分:0)
您可以检查每个文本框以查看其内容是否为数字。如果它们不是数字,则忽略它们或指定默认值。
例如:
忽略非数字:
If IsNumeric(Topping1TextBox.Text) Then
If CInt(Topping1TextBox.Text) > 0 And CInt(Topping1TextBox.Text) < 12 Then
Topping1 = 0.5
Else
Topping1 = 0
End If
End If
非数字的默认值:
If IsNumeric(Topping1TextBox.Text) AndAlso CInt(Topping1TextBox.Text) > 0 AndAlso CInt(Topping1TextBox.Text) < 12 Then
Topping1 = 0.5
Else
Topping1 = 0
End If