OK ......第一关,你并不真正需要的If
s的一切。 (加的标识属性:对于任何x
,x + 0 = x
)这是将要发生的事情发生之前,你甚至得到他们的任何错误,所以你做的唯一事情是说,如果ABox
解析零和BBox
的值是“5.000000”,所有这些零将被复制到结果中。同样,如果这些箱子倒过来。
此外,如果您使用Decimal.TryParse
而不是Decimal.Parse
,输入框中的不带号码的东西不会杀死您的程序。它们只会变成0
你会得到类似的结果(减去多余的零),还有一些类似的代码
Private Sub AddBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddButton.Click
Dim A as Decimal, B as Decimal
Decimal.TryParse(ABox.Text, A)
Decimal.TryParse(BBox.Text, B)
ResultBox.Text = (A + B).ToString("N2")
End Sub
如果由于某种原因蠢你真的,真的,真的需要所有如果废话,你将要使用ElseIf
,以确保默认情况下无法运行。
Private Sub AddBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddButton.Click
Dim A as Decimal
Dim B as Decimal
Decimal.TryParse(ABox.Text, A)
Decimal.TryParse(BBox.Text, B)
If A = 0 then
ResultBox.Text = BBox.Text
ElseIf B = 0 then
ResultBox.Text = ABox.Text
Else
Dim result as Decimal = A + B
ResultBox.Text = result.ToString("N2")
End If
End Sub
但它是一种浪费 - 更糟糕的是,如果重点是添加两个数字,这是不正确的。有人可以把“我喜欢奶酪”放在第一个盒子里,“YAAAAAAAAY !!!”在另一个,结果将是“YAAAAAAAAY !!!”。显然不会发生什么。
Private Sub AddBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles AddButton.Click
Dim A as Decimal
Dim B as Decimal
Try
A = Decimal.Parse(ABox.Text)
B = Decimal.Parse(BBox.Text)
ResultBox.Text = (A + B).ToString("N2")
Catch ex as FormatException
MessageBox.Show("Exactly two numbers (one per box), please!")
End Try
End Sub
但我讨厌这样做的用户输入。你应该预计用户是恶意和/或愚蠢的,并指望他们尽其一切可以搞砸你的应用程序。这会在以后节省您大量的调试时间。但是,如果我们假设最糟糕的,是畸形的输入真的一个特殊的条件?我拒绝。 (其他人可能不同意,但他们错了:))
如果你想通知用户输入错误,Decimal.TryParse
也返回一个布尔值(真/假),说明它是否成功。如果失败了,你可以显示一条消息告诉用户退出是一个白痴。 (稍微有点外交,如果你想要的话)。
第二...转到Option Strict
就可以了。请。所有这些隐含的演员都给了我意志。请注意,这可能会将十几个错误添加到您的列表中......但这是一个好的的事情。一个人应该知道,当他们试图把一个数字放在一个字符串变量中时,会发生很多魔术(我认为)人们需要更多地注意。 K,现在,至于调试...如果你已经遵循我的建议到这一点,你应该不需要调试。异常消失了,代码在编译之前会更加正确。但是,如果你仍然需要,一步一步地完成程序,就是在Function
行本身或者第一行不是声明的地方设置一个断点。 (点击行旁边的左边空白处,红色的小球应该出现在你点击的地方的空白处,这可以让你知道那里有一个断点。)你也可以尝试在声明上设置一个断点,但是我似乎请记住,使断点处于实际执行某些操作的下一行,或者在函数的开始处。我忘了这个,并没有在这台机器上的VS来检查。)
当你从VS运行程序时,程序将启动,当它遇到断点时,VS会弹出回到前台黄色的箭头是红色的球。该黄色箭头指向要执行的下一行。从那里,你可以使用调试工具栏(看你的工具栏;你应该有额外的按钮,我认为蓝色,看起来像播放/停止/等按钮)来逐步通过代码。您还应该看到标有“本地人”,“手表”以及您期望在有价值的调试器中看到的其他窗口的窗口。 :)
请注意,尽管程序停止在断点处,或者逐句通过代码,应用程序将显示为冻结。用户界面更新可能不会立即显示,因此,您将无法在输入框中输入任何内容,或者直到您恢复(直接点击“播放”按钮)按钮。
为什么要麻烦?如果A = 0,则A + B = B;如果B = 0,则A + B = A;如果两者都为0,则A + B = 0。换句话说,你可以计算出A + B和该死的条件的东西。 – cHao 2012-02-27 03:09:56
这是更好? 如果(A = 0),那么 ResultLabel.Text = B 结束如果 如果(B = 0 )Then ResultLabel.Text = A End If 如果(BBox.Text = 0和ABox.Text = 0),那么 ResultLabel.Text = 0 结束如果 – user1234703 2012-02-27 04:11:06
还有,我将如何去寻找一步一步的调试准确地找到了程序正在输出每一步的方式?我在这里先向您的帮助表示感谢! – user1234703 2012-02-27 04:11:40