【问题标题】:Finding the mean using a function. vb.net使用函数求平均值。 VB.net
【发布时间】:2015-01-29 16:02:28
【问题描述】:

首先我想说我是 vb.net 和一般编码的初学者。

我正在尝试查找数组中数字的平均值。

到目前为止,我的代码是这样的。

 Function getMean() As Double
        Dim DblArray(lstbxInput.Items.Count - 1) As Double
        Dim totalsum As Double
        Dim i As Integer
        For i = 0 To dblArray.Length - 1
            totalsum += DblArray(i)
        Next i
        dblmean = totalsum / DblArray.Length
        Return dblmean

    End Function

最后,我需要 dblmean 返回 dblarray 数字的平均值。 这是正确的吗? 很明显这是错误的,因为我试图在标签上打印该值,但它总是为零。为什么? 代码有问题吗?还是打印出来的值有什么问题?

另外,这是用于打印 dblmean 的代码

lblLrgAns.Text = dblmean.ToString

当我单击按钮时会发生这种情况。

【问题讨论】:

  • 您的阵列中似乎没有任何内容。设置断点查看

标签: arrays vb.net function mean


【解决方案1】:

一种简单的方法是使用位于System.Linq 名称psorts 中的Enumerable.Average 扩展方法(所以记得添加Import)。

Dim mean As Double = DblArray.Average()

在您的情况下,您需要先初始化数组。我猜lstbxInput 中的项目已经翻倍了。

Dim DblArrayAs As Double() = lstbxInput.Items.Cast(Of Double)().ToArray()

【讨论】:

    【解决方案2】:

    当你这样做时

    Dim DblArray(lstbxInput.Items.Count - 1) As Double
    

    DblArray 的所有项目均为 0,但您永远不会更改代码中的任何 DblArray 项目,因此 dblmean 也将为 0。您需要在计算平均值之前分配 DblArray 的每个项目.

    我猜这与您之前的问题有关:putting a list into an array?,所以您的代码应该是这样的

    Function getMean() As Double
        Dim DblArray(lstbxInput.Items.Count - 1) As Double
    
        'get the items from lstbxInput
        getNumbers(DblArray)
    
        Dim totalsum As Double
        Dim i As Integer
        For i = 0 To dblArray.Length - 1
            totalsum += DblArray(i)
        Next i
        dblmean = totalsum / DblArray.Length
        Return dblmean
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多