如何获得方程式的特定代码

How to get a certain code for an equation

我是初学者,在 Visual Studio 2019 年使用 Visual Basic 开发我的第一个应用程序。

我要计算这个:

我在(列表视图)和(文本框)中都有 Wi
我在(列表视图)中拥有所有 Hi

我的问题是如何将 wi 列表视图(或 Wi 文本框)乘以 h i 列表视图并在第三个列表视图中得到这个结果 ?

我预计您发现的最大问题是从 ListView 中获取数据 - 请注意,使用控件存储数据通常不是一个好主意。

请注意,VB.NET(以及 C# 和许多其他计算机语言)中的数组索引从零开始(即它们是偏移量,而不是数学中使用的索引)。

一旦你有了数组中的数据,就很容易进行计算。为方法和变量起一个有意义的名字也是一个问题。

有了名为 ListViewW、ListViewH 和 ListViewF 的 ListView,我想到了这个:

Public Class Form1
    Dim rand As New Random()

    Function Fvalues(Fb As Double, weights As Double(), values As Double()) As Double()
        If weights.Length <> values.Length Then
            Throw New ArgumentException("Number of weights does not equal number of values.")
        End If
        'TODO: Possibly more argument checking.

        Dim total = 0.0
        For i = 0 To weights.Length - 1
            total += weights(i) * values(i)
        Next
        'TODO: Check for total = 0.

        Dim F(weights.Length - 1) As Double

        For i = 0 To weights.Length - 1
            F(i) = Fb * weights(i) * values(i) / total
        Next

        Return F

    End Function

    Function ListViewToDoubles(lv As ListView) As Double()
        Dim d As New List(Of Double)

        For i = 0 To lv.Items.Count - 1
            Dim dbl As Double
            If Double.TryParse(lv.Items(i).Text, dbl) Then
                d.Add(dbl)
            End If
        Next

        Return d.ToArray()

    End Function

    Sub CreateSampleData()
        For i = 1 To 5
            ListViewW.Items.Add(rand.NextDouble().ToString())
            ListViewH.Items.Add(rand.Next(0, 11).ToString())
        Next

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        CreateSampleData()

        Dim weights = ListViewToDoubles(ListViewW)
        Dim values = ListViewToDoubles(ListViewH)

        Dim f = Fvalues(0.5, weights, values)

        For Each x In f
            ListViewF.Items.Add(x.ToString())
        Next

    End Sub

End Class