我正在使用以下代码读取高分文件,其中先写入分数,将玩家姓名写入下一行,然后如果没有写入文件的 3 个分数,则显示前 3 个或更少的分数。高分显示应该将分数按最高排序,这就是这个程序试图实现的。
Array.sort() 没有做任何该死的事情。事实上,该程序甚至没有像它应该的那样反转数组。我已经使用明确给出的名称和分数数组以这种方式测试了 array.sort() 并且它工作正常。我想它可能仍在以字符串形式读取数据,即使它被声明为其他方式,但是当我将数组类型更改为整数时它会四舍五入小数,所以我很确定不是这样。
我不知道为什么从文件中读取数据会改变它的排序方式。我的老师也不明白发生了什么。有谁知道这里发生了什么?
Imports System.IO
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileLines() = File.ReadAllLines(Application.StartupPath & "/../../Resources/highscores.txt")
Dim highscores() As Double = {}
Dim names() As String = {}
'For some reason vb doesn't have a function to add items to arrays.
'Lists have this capability, but if I used a list I couldn't use array.sort
For i As Integer = 0 To fileLines.Length() - 1
If (i Mod 2 = 0) Then
'highscores.add(fileLines(i))
Array.Resize(highscores, highscores.Length + 1)
highscores(highscores.Length - 1) = fileLines(i)
Else
'names.add(fileLines(i))
Array.Resize(names, names.Length + 1)
names(names.Length - 1) = fileLines(i)
End If
Next
Array.Sort(highscores, names)
highscores.Reverse()
names.Reverse()
If highscores.Length() > 0 Then
Label1.Text = Str(highscores(0)) + " " + names(0)
End If
If highscores.Length() > 1 Then
Label2.Text = Str(highscores(1)) + " " + names(1)
End If
If highscores.Length() > 2 Then
Label3.Text = Str(highscores(2)) + " " + names(2)
End If
End Sub
End Class