2014-11-18 3 views
0

Таким образом, предположим, что вы создадите программу на VB, которая записывает числа в поле списка и находит среднее значение, а затем я могу сравнить предыдущие номера полей списка и перенести любое число, которое выше среднего, в другой список.Visual Basic For Loop, как сравнить listbox с другим списком?

Вот мой код. Я застрял в той части, где мне нужно перевести числа, которые выше среднего, в другой список.

Моя логика [показывает количество чисел, затем сравнивает количество чисел со средним числом и любые числа, которые больше, чем среднее значение, добавлено в новый список), но я не знаю, как писать синтаксис.

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 

ответ

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 

Что-то отметить: Есть гораздо более эффективные и машиночитаемые способы сделать это, но я хотел бы использовать код, подобный тому, что вы уже написали. Вы уже знаете функциональность, вам просто нужно применить ее несколько иначе. Некоторые простые предложения: сохранить переменную для среднего (возможно, как двойной), чтобы вы не пересчитывали ее на каждую итерацию; используйте цикл For Each для итерации элементов в ListBox вместо цикла For..Next и т. д.

Смежные вопросы