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