簡體   English   中英

在visual basic中為數組賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM