[英]Assigning a value to array in visual basic
這個可視化的基本程序提示用戶交互輸入 4 個整數值,程序將這些值存儲在一個數組中。 然后它應該找到存儲在數組中的最小值和最大值,以及 4 個值的平均值。 代碼是
Option Explicit On
Option Strict On
Module BattingAverage
Sub Main()
Const MAX_AVERAGES AS Integer = 3
Dim Averages(MAX_AVERAGES -1) as Double
Dim LoopIndex As Integer
Dim BattingAverage As Double
Dim BattingString As String
Dim Min As Double
Dim Max As Double
Dim Total As Double
Dim Average As Double
For LoopIndex = 0 To MAX_AVERAGES - 1
BattingString = InputBox$("Enter a batting average: ")
BattingAverage = Convert.ToDouble(BattingString)
'Assigning a value to Array
Averages(LoopIndex) += BattingAverage
Next LoopIndex
Min = Averages(0)
Max = Averages(0)
Total = Averages(0)
For LoopIndex = 1 To Averages.length -1
If Averages(LoopIndex) < Min then
Min = Averages(LoopIndex)
Else If Averages(LoopIndex) > Max then
Max = Averages(LoopIndex)
end if
Total += Averages(LoopIndex)
'
Next LoopIndex
Average = Total / MAX_AVERAGES
System.Console.WriteLine("Batting Averages : " & Averages(LoopIndex))
System.Console.WriteLine("Maximum value : " &Max)
System.Console.WriteLine("Minimum value : " &Min)
System.Console.WriteLine("Average : " &Average)
End Sub
End Module
我運行了代碼,但它拋出了這個 indexoutofbound 異常
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at BattingAverage.Main()
我不確定如何修復此代碼。 我還認為我的代碼( Averages(LoopIndex) += BattingAverage
)為數組賦值是不正確的。 請幫忙
這里有一些錯誤。 首先,如果你想取 4 個值,你需要改變 MAX_AVERAGES = 4。錯誤來自這一行
System.Console.WriteLine("Batting Averages : " & Averages(LoopIndex))
因為這里 LoopIndex 已經增加到 3,超出了大小為 3 的數組的邊界。Averages(2) 是最后一個索引。 您應該將行更改為
Console.WriteLine("Batting Averages: ")
For i = 0 To Averages.Length - 1
Console.WriteLine(Averages(i).ToString)
Next
obl 在數組大小的上述部分上是正確的,並且在打印部分上很接近。
您的原件:
System.Console.WriteLine("Batting Averages : " & Averages(LoopIndex))
System.Console.WriteLine("Maximum value : " &Max)
System.Console.WriteLine("Minimum value : " &Min)
System.Console.WriteLine("Average : " &Average)
End Sub
應該怎么讀:
For LoopIndex = 0 To 3
System.Console.WriteLine("Batting Averages : " &Averages(LoopIndex))
Next
System.Console.WriteLine("Maximum value : " &Max)
System.Console.WriteLine("Minimum value : " &Min)
System.Console.WriteLine("Average : " &Average)
End Sub
代碼無法根據數組的大小執行,因為您的代碼讀取它應該打印數組中的所有值,如果您的數組大小只有一個值,則它本來可以打印。 所以,你需要一個 For LoopIndex = "bounds of the array" 才能工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.