2015-03-04 2 views
1

J'ai fait un jeu simple quiz où l'utilisateur est demandé 10 questions et obtient un score résultant de 10. Je programme actuellement les classements et je voudrais trier les scores de la plus haute au plus bas. J'ai utilisé une structure pour capturer les données ensemble et un tableau 1D pour stocker les données. Comment puis-je trier les tableaux par le score et toujours garder la structure ensemble?tri d'un tableau de structures en vb

Structure userData 
     Dim userName As String 
     Dim score1Text As Integer 
     Dim score2Text As Integer 
     Dim score3Text As Integer 
     Dim average As Integer 
    End Structure 

    Dim users(99) As userData 

+0

la structure va "rester ensemble" si vous il suffit d'attribuer une position à une autre. par exemple "users (0) = users (1)" affectera TOUTES les données utilisateur de la position 1 à la position 0 – Jeremy

+0

Je suppose que vous voulez trier les utilisateurs par score moyen? Pourquoi les scores sont-ils nommés "score1Text" lorsqu'ils ne sont pas du texte? – dwilliss

Répondre

0

Je mettre en œuvre IComparable sur votre classe UserData (en faire une classe, pas une structure)

Public Class UserData : Implements IComparable(Of UserData) 
    Public Property userName As String 
    Public Property score1 As Integer 
    Public Property score2 As Integer 
    Public Property score3 As Integer 
    Public Property average As Integer ' I'd make this Double or something, but this is what you had. 

    Public Function CompareTo(other As UserData) As Integer Implements IComparable(Of UserData).CompareTo 
     If other Is Nothing Then Return 1 
     Return average.CompareTo(other.average) 
    End Function 
End Class 

Puis un autre ...

Dim users As New List(Of UserData) 
    ' Fill in users somehow... 

    users.Sort()