Visual Basic For循环如何将列表框与另一个列表框进行比较?

时间:2014-11-18 04:56:40

标签: vb.net visual-studio-2010 for-loop listbox

所以我想在VB上创建一个程序,将数字记录到列表框中并找到平均值,然后我想比较之前的列表框编号并将任何高于平均值的数字转移到另一个列表框中。

到目前为止,这是我的代码。我被困在我必须将高于平均值的数字转移到另一个列表框的部分。

我的逻辑是[显示数字的数量,然后将数字的数量与平均值进行比较,以及任何大于平均数的数字,生病添加到新列表框中]但我不知道如何编写语法。

Option Strict On
Public Class frmAverageOfScore

    Private Sub btnRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecord.Click
        Dim lblscore As Double
        lblscore = CDbl(txtScore.Text)
        lstListofScores.Items.Add(lblscore)
    End Sub

    Private Sub btnAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAverage.Click
        Dim listScores As Integer = lstListofScores.Items.Count
        Dim sum As Double = 0
        For average As Integer = 0 To (listScores - 1)
            sum += CDbl(lstListofScores.Items(average))
        Next
        txtAverage.Text = (sum / listScores).ToString("N")

    End Sub

End Class

1 个答案:

答案 0 :(得分:0)

您现有的两个例程已经为您需要做的事奠定了基础。例如,您已经在平均例程中循环遍历第一个列表中的项目。现在,只需将每个列表与平均值进行比较,如果它们更大,则填充第二个列表,类似于填充第一个列表的方式。

    For i As Integer = 0 To (listScores - 1)
        If (CDbl(lstListofScores.Items(i)) > CDbl(txtAverage.Text)) Then
            lstListofScores2.Items.Add(lstListofScores.Items(i))
        End If
    Next

需要注意的事项:有更多有效且可读的方法可以做到这一点,但我想使用类似于您已编写过的代码。您已经了解了这些功能,您只需以稍微不同的方式应用它。一些简单的建议:存储一个变量用于平均值(可能是一个Double),这样你就不会在每次迭代时重新计算它;使用For Each循环迭代ListBox中的Items而不是For..Next循环,等等。

相关问题