我正在创建一个VB 2008更改计算器作为一项任务。该计划将使用支付的金额 - 应付金额计算总额(这工作正常)。之后,它将把这笔钱分解为美元,宿舍,硬币,镍币和硬币。我遇到的问题是,有时候便士,镍或者硬币的数量会是负数。例如$ 2.99 = 3美元和-1便士。VB更改计算器
解决
感谢的答复,这里是我能够做的工作与我有限的知识。
Option Explicit On
Option Strict Off
Option Infer Off
Public Class frmMain
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
'Clear boxes
lblDollarsAmount.Text = String.Empty
lblQuartersAmount.Text = String.Empty
lblDimesAmount.Text = String.Empty
lblNickelsAmount.Text = String.Empty
lblPenniesAmount.Text = String.Empty
txtOwed.Text = String.Empty
txtPaid.Text = String.Empty
lblAmountDue.Text = String.Empty
txtOwed.Focus()
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
'Close application'
Me.Close()
End Sub
Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click
' Find Difference between Total Price and Total Received
lblAmountDue.Text = Val(txtPaid.Text) - Val(txtOwed.Text)
Dim intChangeAmount As Integer = lblAmountDue.Text * 100
'Declare Integers
Dim intDollarsBack As Integer
Dim intQuartersBack As Integer
Dim intDimesBack As Integer
Dim intNickelsBack As Integer
Dim intPenniesBack As Integer
' Change Values
Const intDollarValue As Integer = 100
Const intQuarterValue As Integer = 25
Const intDimeValue As Integer = 10
Const intNickelValue As Integer = 5
Const intPennyValue As Integer = 1
'Dollars
intDollarsBack = CInt(Val(intChangeAmount \ intDollarValue))
intChangeAmount = intChangeAmount - Val(Val(intDollarsBack) * intDollarValue)
lblDollarsAmount.Text = intDollarsBack.ToString
'Quarters
intQuartersBack = CInt(Val(intChangeAmount \ intQuarterValue))
intChangeAmount = intChangeAmount - Val(Val(intQuartersBack) * intQuarterValue)
lblQuartersAmount.Text = intQuartersBack.ToString
'Dimes
intDimesBack = CInt(Val(intChangeAmount \ intDimeValue))
intChangeAmount = intChangeAmount - Val(Val(intDimesBack) * intDimeValue)
lblDimesAmount.Text = intDimesBack.ToString
'Nickels
intNickelsBack = CInt(Val(intChangeAmount \ intNickelValue))
intChangeAmount = intChangeAmount - Val(Val(intNickelsBack) * intNickelValue)
lblNickelsAmount.Text = intNickelsBack.ToString
'Pennies
intPenniesBack = CInt(Val(intChangeAmount \ intPennyValue))
intChangeAmount = intChangeAmount - Val(Val(intPenniesBack) * intPennyValue)
lblPenniesAmount.Text = intPenniesBack.ToString
End Sub
End Class
一般目的建议:将GUI与(业务)逻辑分开。您应该创建一个函数来计算给定*总价*和*总付费*的变化。由于您需要返回多个值(硬币,便士等),因此可以将它们放入类的字段(属性)中。 – 2010-09-25 01:13:04
您是老师建议/强迫您使用type作为变量名称的前缀吗?如果你没有,那就不要。请参阅http://msdn.microsoft.com/en-us/library/ms229042.aspx指南。 – 2010-09-26 13:17:27
我同意Tim Murphy:'intNickelsBack'和'dblChangeAmount'不是好的变量名,但'lblNickelsAmount'没问题。 – 2010-09-26 18:54:25