나는 처음부터 다시 시작했으며 누적 합계 2 개를 제외하고 모든 것이 의도 한대로 작동하지만 계산이 원하는 방식으로 작동하지 않습니다. 이전 판매량을 합계에 추가하는 대신 끝에 새로운 판매량을 추가합니다 ...VB.NET - 누적 수 및 평균 계산
예를 들어 : 1 스노우 보드와 1 스노우 보드 (부츠 포함)를 입력하면 스노우 보드와 스노우 보드의 요약에 1이 표시됩니다 부츠와. 그러나 내가 판매량을 줄이기 위해 다시 입력을 시도 할 때 문제가 발생하면 1 스노우 보드와 1 스노우 보드 부츠를 입력하고 요약은 2가 아닌 11을 표시합니다. 왜 이런 일이 발생합니까?
' Declare module-level variables and constants.
Private SnowBoardsSold, BootsSold, SaleCount As Integer
Private ItemsSold As Integer
Private TotalSales As Decimal
Const SNOWBOARD_RATE As Decimal = 20D
Const BOOTS_RATE As Decimal = 30D
Private Sub CalculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalculateButton.Click
' Calculate the prices
Dim SnowBoards, Boots As Integer
Dim SnowBoardSale, BootsSale, ThisSale, AverageSalesEver As Decimal
Try
' Convert the Snowboard input to numeric variable.
SnowBoards = Integer.Parse(SnowboardsTextBox.Text)
Try
' Convert Boots if Snowboard was successful.
Boots = Integer.Parse(WithBootsTextBox.Text)
' Calculate values for sale.
SnowBoardSale = SnowBoards * SNOWBOARD_RATE
BootsSale = Boots * BOOTS_RATE
ThisSale = SnowBoardSale + BootsSale
' Calculate summary values.
TotalSales += ThisSale
BootsSold += BootsSale
SnowBoardsSold += SnowBoardSale
SaleCount += 1
AverageSalesEver = TotalSales/SaleCount
' Format and display prices for the sale.
SnowBoardsPriceTextBox.Text = SnowBoardSale.ToString("c")
BootsPriceTextBox.Text = BootsSale.ToString("c")
TotalPriceTextBox.Text = ThisSale.ToString("c")
' Format and display values for the summary.
SnowBoardRentalTextBox.Text += SnowBoards.ToString()
BootsRentalTextBox.Text += Boots.ToString()
TotalChargesTextBox.Text = TotalSales.ToString("c")
AverageChargeTextBox.Text = AverageSalesEver.ToString("c")
Catch BootsException As FormatException
' Handle a Boots exception.
MessageBox.Show("Please enter numbers.", "Data Entry Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
With WithBootsTextBox
.Focus()
.SelectAll()
End With
End Try
Catch SnowBoardsException As FormatException
' Handle a SnowBoard exception.
MessageBox.Show("Please enter numbers.", "Data Entry Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
With SnowboardsTextBox
.Focus()
.SelectAll()
End With
Catch AnException As Exception
'Handle any other exception.
MessageBox.Show("Error: " & AnException.Message)
End Try
End Sub
변수가 잘못되어 – Plutonix
에 초점을 맞출 수 있습니다. AverageChargeInteger 변수가 올바르지 않고 SnowboardSaleCountInteger 및 WithBootsSaleCountInteger가 예상대로 합쳐지지 않습니다. –
각 계산에 대해 함수를 만들 것입니다. 사실 각 추상화를 별도의 하위 또는 람다로 분리하십시오. 이렇게하면 코드를 이해하기 쉽게 읽을 수 있습니다. 내 다른 제안은 당신이 얻고있는 결과와해야 할 결과를 보여주는 예입니다. – jcwrequests