我正在为我的Visual Basic类编写一个程序,该程序应该能够计算从一个列表框中选择的项目的最终总价格并将其添加到另一个列表框中。其中2个项目的销售税必须添加到最终价格中。该计划还有一个模块,应该用于记录所有税款,并用于执行所有与税务相关的功能。使用Visual Basic中的模块执行计算
这是最新的代码。
Option Strict On
Public Class Form1
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click
If (txtQuantity.Text = "") Then
MessageBox.Show("Please enter a quantity for the item you selected")
ElseIf Not Integer.TryParse(txtQuantity.Text, CInt(txtQuantity.Text)) Then
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
Exit Sub
Else
lstPurchased.Items.Add(txtQuantity.Text & " " & lstSale.Text)
End If
End Sub
Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
Dim int As Integer
Dim total As Double = 0
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
Integer.TryParse(lst(0), int)
total += TaxesModule.SalesTax(int, lst(1))
Next
MessageBox.Show(CStr(FormatCurrency(total)))
End Sub
Private Sub btnClear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClear.Click
lstPurchased.Items.Clear()
txtQuantity.Clear()
End Sub
End Class
和最新的模块
Option Strict On
Module TaxesModule
Private Const DONUT_TAX As Decimal = CDec(0.083)
Private Const RAISIN_TAX As Decimal = CDec(0.02)
Private Const SS_TAX As Decimal = CDec(0.062) ' <-- you are not using this
Public Function SalesTax(ByVal Quantity As Integer, ByVal item As String) As Double
Dim TotalWithSalesTax As Double
If item = "Wheat Bread" Then
TotalWithSalesTax += (Quantity * 1.15)
ElseIf item = "White Bread" Then
TotalWithSalesTax += (Quantity * 1.05)
ElseIf item = "Donuts" Then
TotalWithSalesTax += (Quantity * (0.5 * DONUT_TAX) + (Quantity * 0.5))
ElseIf item = "Raisins" Then
TotalWithSalesTax += (Quantity * (0.25 * RAISIN_TAX) + (Quantity * 0.25))
End If
Return TotalWithSalesTax
End Function
End Module
由于代码现在编写的代码,我有唯一的问题是,对于TotalWithSalesTax“葡萄干”未正确计算。例如,如果我从列表框中选择“葡萄干”并将其数量为1添加到另一个列表框中,则消息框中显示的总数为$ 0.00。
我开始觉得问题是与下面的代码段:
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
因为我已经尝试进行更改,如
For i As Integer = 1 ...
这引起了双方甜甜圈和葡萄干在消息框中给我总共0.00美元。所以我想知道如果计数如何设置不允许它通过整个列表,但我不知道如何解决这个问题?
对于Visual Basic来说,我还是个新手,一般来说编程是真的,这是我第一次使用模块。任何人都可以帮我弄清楚我做错了什么,所以我可以转移到程序的其他部分?
我想你应该抓住一个基本的编程书并重新开始阅读。更多地关注变量作用域和If语句。你的代码中有很多问题。 – bansi
哦,是的,我确定存在很多问题,我一直在处理这些代码,并且已经拿出东西,放入不同的东西,返回到一些较旧的东西等等,我不确定是否有一切都是我想要的。当我开始尝试添加模块中的东西时,我会搞砸一些东西,因为在我添加之前,至少在添加税前计算了它的应有方式。 –
要删除“Public FinalTotal As Double”或将其更改为私有(您需要在此之后修复代码)。如果item =“Wheat Bread”,那么你是什么意思?Then .. ElseIf item =“White Bread”'?这怎么可能。将所有变量转换为“Private”。尽量不要使用Public变量,这是纯粹的邪恶。 – bansi