2017-03-19 7 views
0

は、ユーザーに に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 

である私は、コードを実行しましたが、それは私がこのコードを修正する方法がわからない

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array. 
    at BattingAverage.Main() 

このindexoutofbound例外がスローされます。私はまた、配列に値を割り当てる私のコード(Averages(LoopIndex) += BattingAverage)が正しいとは思わない。助けてください

+0

'+ ='は現在の値をインクリメントし、 '='は新しい値を割り当てます。 –

答えて

2

ここにはいくつかの問題があります。あなたは4つの値を取るようにしたい場合はまず、あなたはMAX_AVERAGESここLoopIndexは、配列の範囲外である、3に増加しているので、= 4.エラーがこの行

System.Console.WriteLine("Batting Averages : " & Averages(LoopIndex)) 

から来ているを変更する必要がありますオフサイズ3.平均(2)が最後のインデックスです。

Console.WriteLine("Batting Averages: ") 
For i = 0 To Averages.Length - 1 
    Console.WriteLine(Averages(i).ToString) 
Next 
関連する問題