我想弄清楚我错过了什么。我已经提交了这个家庭作业,如你所见。当返回降雨最小和最大统计数据时,你还应该带着最小和最大值的月份。我尝试了许多不同的方法,但似乎没有任何工作。我错过了什么?不要匆忙,因为我应该在4月19日到期,但我已经提交了它。试着看看我哪里出错了。
Const intMONTHS As Integer = 11
Dim sngRain(intMONTHS) As Single
Dim strMonths() As String = {"January", "February", "March", "April",
"May", "June", "July", "August", "September", "October", "November",
"December"}
Private Sub btnInput_Click(sender As Object, e As EventArgs) Handles btnInput.Click
lstOutput.Items.Add("Monthly Rainfall Input")
lstOutput.Items.Add("___________________________")
GetRainAmount(sngRain)
End Sub
Sub GetRainAmount(ByRef sngRain() As Single)
Dim intCount As Integer = 0
Do While intCount < sngRain.Length
Try
sngRain(intCount) =
CDec(InputBox("Please enter the amount of Rain(in inches) for " & strMonths(intCount)))
lstOutput.Items.Add(("Rainfall for " & strMonths(intCount) & " = " & sngRain(intCount)))
intCount += 1
Catch ex As Exception
MessageBox.Show("Enter a valid numeric value.")
End Try
Loop
End Sub
Function Total(ByVal sngRain() As Single) As Single
Dim sngTotal As Single = 0
Dim intCount As Integer
For intCount = 0 To (sngRain.Length - 1)
sngTotal += sngRain(intCount)
Next
Return sngTotal
End Function
Function Average(ByVal sngRain() As Single) As Single
Return Total(sngRain) / strMonths.Length
End Function
Function Minimum(ByVal sngRain() As Single) As Single
Dim intCount As Integer
Dim sngMinimum As Single
Dim intminIndex As Integer
sngMinimum = sngRain(0)
For intCount = 0 To (sngRain.Length - 1)
If sngRain(intCount) < sngMinimum Then
sngMinimum = sngRain(intCount)
intminIndex = intCount
End If
Next
Return sngMinimum
End Function
Function Maximum(ByVal sngRain() As Single) As Single
Dim intCount As Integer
Dim sngMaximum As Single
Dim intmaxIndex As Integer
sngMaximum = sngRain(0)
For intCount = 0 To (sngRain.Length - 1)
If sngRain(intCount) > sngMaximum Then
sngMaximum = sngRain(intCount)
intmaxIndex = CInt(strMonths(intCount))
End If
Next
Return sngMaximum
End Function
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
Dim intminIndex As Integer
Dim intmaxIndex As Integer
Dim sngTotal As Single
Dim sngAverage As Single
Dim sngMinimum As Single
Dim sngMaximum As Single
sngTotal = Total(sngRain)
sngAverage = Average(sngRain)
sngMinimum = Minimum(sngRain)
sngMaximum = Maximum(sngRain)
lblTotalRain.Text = ("The total annual rainfall was " & sngTotal)
lblAverage.Text = ("The average monthly rainfall was " & sngAverage)
lblMinimum.Text = ("The minimum monthly rainfall was " & sngMinimum & "(" & strMonths(intminIndex) & ")")
lblMaximum.Text = ("The maximum monthly rainfall was " & sngMaximum & "(" & strMonths(intmaxIndex) & ")")
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
lstOutput.Items.Clear()
lblTotalRain.Text = String.Empty
lblAverage.Text = String.Empty
lblMinimum.Text = String.Empty
lblMaximum.Text = String.Empty
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
结束班
答案 0 :(得分:1)
您似乎在Maximum函数中正确设置了intmaxIndex,在Minimum函数中设置了intminIndex,但这些值对于每个函数都是本地的。然后没有设置btnDisplay_Click中的那些变量。
您可以通过将intminIndex和intmaxIndex变量ByRef分别传递给Minimum和Maximum函数来获取最小和最大月份索引。
Function Minimum(ByVal sngRain() As Single, ByRef intminIndex as Integer) As Single
Dim intCount As Integer
Dim sngMinimum As Single
sngMinimum = sngRain(0)
For intCount = 0 To (sngRain.Length - 1)
If sngRain(intCount) < sngMinimum Then
sngMinimum = sngRain(intCount)
intminIndex = intCount
End If
Next
Return sngMinimum
End Function
Function Maximum(ByVal sngRain() As Single, ByRef intmaxIndex as Integer) As Single
Dim intCount As Integer
Dim sngMaximum As Single
sngMaximum = sngRain(0)
For intCount = 0 To (sngRain.Length - 1)
If sngRain(intCount) > sngMaximum Then
sngMaximum = sngRain(intCount)
intmaxIndex = intCount
End If
Next
Return sngMaximum
End Function
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
Dim intminIndex As Integer = 0
Dim intmaxIndex As Integer = 0
Dim sngTotal As Single
Dim sngAverage As Single
Dim sngMinimum As Single
Dim sngMaximum As Single
sngTotal = Total(sngRain)
sngAverage = Average(sngRain)
sngMinimum = Minimum(sngRain, intminIndex)
sngMaximum = Maximum(sngRain, intmaxIndex)
lblTotalRain.Text = ("The total annual rainfall was " & sngTotal)
lblAverage.Text = ("The average monthly rainfall was " & sngAverage)
lblMinimum.Text = ("The minimum monthly rainfall was " & sngMinimum & "(" & strMonths(intminIndex) & ")")
lblMaximum.Text = ("The maximum monthly rainfall was " & sngMaximum & "(" & strMonths(intmaxIndex) & ")")
End Sub