2017-02-02 51 views
0
Public Class Form1 
    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click 
     Dim Teams() As String = IO.File.ReadAllLines("SBWinners.txt") 
     Dim Team As String 
     Dim SteelersWins As Integer = 0 
     Dim RaidersWins As Integer = 0 
     Dim PackersWins As Integer = 0 
     Dim CowboysWins As Integer = 0 
     Dim GiantsWins As Integer = 0 
     Dim RamsWins As Integer = 0 
     Dim RavensWins As Integer = 0 
     Dim SaintsWins As Integer = 0 
     Dim FortyNinersWins As Integer = 0 
     Dim RedskinsWins As Integer = 0 
     Dim BroncosWins As Integer = 0 
     Dim PatriotsWins As Integer = 0 
     Dim ColtsWins As Integer = 0 
     Dim DolphinsWins As Integer = 0 
     Dim BearsWins As Integer = 0 
     Dim JetsWins As Integer = 0 
     Dim ChiefsWins As Integer = 0 
     Dim BuccWins As Integer = 0 

     For Each team In Teams 
      If team = "Steelers" Then 
       SteelersWins += 1 
      End If 
      If team = "Raiders" Then 
       RaidersWins += 1 
      End If 
      If team = "Packers" Then 
       PackersWins += 1 
      End If 
      If team = "Cowboys" Then 
       CowboysWins += 1 
      End If 
      If Team = "Giants" Then 
       GiantsWins += 1 
      End If 
      If team = "Rams" Then 
       RamsWins += 1 
      End If 
      If team = "Ravens" Then 
       RavensWins += 1 
      End If 
      If team = "Saints" Then 
       SaintsWins += 1 
      End If 
      If team = "Forty-Niners" Then 
       FortyNinersWins += 1 
      End If 
      If team = "Redskins" Then 
       RedskinsWins += 1 
      End If 
      If team = "Broncos" Then 
       BroncosWins += 1 
      End If 
      If team = "Patriots" Then 
       PatriotsWins += 1 
      End If 
      If team = "Colts" Then 
       ColtsWins += 1 
      End If 
      If team = "Dolphins" Then 
       DolphinsWins += 1 
      End If 
      If team = "Bears" Then 
       BearsWins += 1 
      End If 
      If team = "Jets" Then 
       JetsWins += 1 
      End If 
      If Team = "Chiefs" Then 
       ChiefsWins += 1 
      End If 
      If team = "Buccaneers" Then 
       BuccWins += 1 
      End If 
     Next 

     Dim Wins() As Integer = {SteelersWins, RaidersWins, PackersWins, CowboysWins, GiantsWins, RamsWins, RavensWins, SaintsWins, FortyNinersWins, RedskinsWins, 
      BroncosWins, PatriotsWins, ColtsWins, DolphinsWins, BearsWins, JetsWins, ChiefsWins, BuccWins} 

     For Each win In Wins 
      Array.Sort(Wins) 
      Array.Reverse(Wins) 
      lstOutput.Items.Add(win) 
     Next 

    End Sub 
End Class 

我現在所擁有的是代碼的讀取與超級盃獲獎者的名字的文本文件,並通過多次出現的隊名的數量計算勝場數正確顯示的數組。然後將這些勝利放入數組中並按降序排列並顯示在列表框中。這一切工作正常。需要幫助的列表框中

我的問題是,我需要顯示相應的球隊名稱與他們的勝利數量在列表框中的同一行。所以,而不是:

它需要:

6鋼

5 49人

5個牛仔

4個巨人

4個包裝工

等。

+0

列表框不知道數據來自的變量的名稱。你需要一個類來保存名字並將其添加到列表框中。 [使用List(Of class)填充ListBox]](http://stackoverflow.com/q/25449848/1070452) – Plutonix

回答

0

您的代碼有幾個問題,其中最重要的是您使用硬編碼名稱和變量來收集您的團隊信息。如果添加新名稱或名稱更改,這會嚴重限制。

正如Plutonix在評論中提到的,您需要使用一個類來正確識別和整理您的信息。我也強烈建議你使用List(of T)集合來包含你的數據。

下面的代碼不會滿足你的要求。

Private Class cls_Team_wins 
    Public Team_Name As String 
    Public Wins As Integer 
    Public Sub New(Name As String) 
     Team_Name = Name 
     Wins = 1 
    End Sub 
    Public Overrides Function ToString() As String 
     Return Strings.Right(" " & Wins, 2) & " - " & Team_Name 
    End Function 
End Class 


Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click 
    Dim Games = New List(Of cls_Team_wins) 
    Dim Teams() As String = IO.File.ReadAllLines("SBWinners.txt") 

    For Each Team As String In Teams 
     If Team <> "" Then 
      Dim Team_Win As cls_Team_wins = Games.Find(Function(x) x.Team_Name = Team) 
      If Team_Win Is Nothing Then 
       Games.Add(New cls_Team_wins(Team)) 
      Else 
       Team_Win.Wins += 1 
      End If 
     End If 

    Next 

    Games.Sort(Function(x, y) -x.Wins.CompareTo(y.Wins)) 

    ListBox1.DataSource = Games 

End Sub 

該課程包括團隊名稱和勝利計數器。它覆蓋了ToString方法,因此列表框知道顯示爲文本的內容。新功能要求您傳遞球隊名稱並將勝利計數器預設爲一個。

For循環檢查並忽略空白的團隊名稱,這可能是讀取文本文件的問題,尤其是在最後一行。否則,如果它尚不存在,它將添加一個新的隊伍到隊伍中,或者如果隊伍中的隊伍增加的話,它會增加隊伍的勝算。

一旦建立了列表,它將被反向排序(注意「函數」比較語句中的減號,這是一種顛倒排序的小技巧),並最終作爲數據源提供給列表框。

祝你好運:)