数组计算最小,最大和平均输出:最小值,最大值和平均值

时间:2012-03-26 15:18:52

标签: vb.net

我对平均输出发表了评论,因为我不断收到有关该错误消息的错误消息。 我一直在说:

  

最大值:33
  最低值:33

我做错了什么?

Option Explicit On
Option Strict On
Module MinMax
Sub Main()
    ' Declare a named constant for array size here
    Const MAX_NUMS As Integer = 10

    ' Declare array here
    Dim numbers() As Integer = {33, 12, -6, 1001, 57, -1, 999, 365, 921, 724}
    'Dim num1 As Integer
    'Dim num2 As Integer
    ' Use this integer variable as your loop index
    Dim loopIndex As Integer = 0

    ' Use this variable to store the number input by user
    Dim value As Integer

    ' String version of number input by user
    Dim valueString As String

    ' Use these variables to store the minimim and maximum values
    Dim min As Integer
    Dim max As Integer

    ' Use these variables to store the total and the average
    Dim total As Double
    Dim average As Double

    ' Write a loop to get values from user and assign to array
    For loopIndex = 0 To MAX_NUMS - 1
        valueString = InputBox$("Enter a value: ")
        value = Convert.ToInt32(valueString)
        ' Assign value to array
        'num1 = loopIndex + 1
        'num2 = loopIndex - 1
    Next loopIndex
    ' Assign the first element in the array to be the minimum and the maximum
    min = numbers(0)
    max = numbers(0)
    ' Start out your total with the value of the first element in the array
    total = numbers(0)
    ' Write a loop here to access array values starting with numbers(1)
    'For loopIndex = 0 To MAX_NUMS - 1
    '    loopIndex(0) + MAX_NUMS = max
    '    loopIndex(0) - MAX_NUMS = min
    ' Next loopIndex
    ' Within the loop test for minimum and maximum values

    ' Also accumulate a total of all values


    ' Calculate the average of the 10 values
    average = loopIndex / MAX_NUMS

    ' Print the values stored in the numbers array

    ' Print the maximum value, minimum value, and average
    System.Console.WriteLine("Maximum value: " & max)
    System.Console.WriteLine("Minimum value: " & min)
    ' System.Comsole.WriteLine("Average = " & average)
End Sub
End Module

2 个答案:

答案 0 :(得分:2)

删除不影响输出的代码,请留下:

Option Explicit On
Option Strict On

Module MinMax
    Sub Main()
        Dim numbers() As Integer = {33, 12, -6, 1001, 57, -1, 999, 365, 921, 724}

        Dim min As Integer
        Dim max As Integer

        min = numbers(0)
        max = numbers(0)

        System.Console.WriteLine("Maximum value: " & max)
        System.Console.WriteLine("Minimum value: " & min)
    End Sub
End Module

基本上,你是:

  1. 声明一个整数数组。
  2. 声明两个默认整数。
  3. 将两个默认整数的值分配给数组的第一个整数(33)。
  4. 将两个整数写入控制台。
  5. 在所有其他代码中,您不会修改数组或输出的两个整数。

答案 1 :(得分:2)

你的代码很奇怪。你有一个常量初始化的数组,但你似乎希望用户输入数组值,如果是这样的话,你应该像这样修改第一个循环

    For loopIndex = 0 To MAX_NUMS - 1
        valueString = InputBox$("Enter a value: ")
        value = Convert.ToInt32(valueString)
        ' Assign value to array
        numbers(loopIndex) = value
    Next loopIndex

接下来你想获得min,max和avg数字,这部分代码很好:

min = numbers(0)
max = numbers(0)
' Start out your total with the value of the first element in the array
total = numbers(0)

然后你评论了应该做实际工作的循环。你可以像这样写

 ' We start loop with index 1 since index 0 is already accounted for 

   For loopIndex = 1 To MAX_NUMS - 1  
      If numbers(loopIndex) < min Then min = numbers(loopIndex)
      If numbers(loopIndex) > max Then max = numbers(loopIndex)
      ' accrue total value
      total = total + numbers(loopIndex)
   Next loopIndex



   ' After the loop ends, the minimum value and the maximum value will be correctly
   ' placed in min and max respectively

   ' Now compute average
   average = total / MAX_NUMs

希望这很清楚。祝你好运!