VB编程:读取文本中的成绩,按照从小到大排序,可是用我的代码输出后最大值和最小值均和文本中不相符

这是文本:

这是代码和输出后的结果:

求大神指点!

Private Sub Form_Load()
Dim s() As String, i As Long, j As Long, n As String
Open "D:\scores.txt" For Binary As #1
s = Split(Split(Input(LOF(1), #1), vbCrLf)(1), " ")
Close #1
For i = 0 To UBound(s) - 1
    For j = i + 1 To UBound(s)
        If Val(s(i)) > Val(s(i)) Then
            n = s(i)
            s(i) = s(j)
            s(j) = n
        End If
    Next j
Next i
Debug.Print Join(s, vbCrLf)
End Sub

追问

成绩都能显示了,但是排序混乱了

如果把代码Val(s(i)) > Val(s(i))改为Val(s(i)) > Val(s(j))后,能显示最大值,但最小值只能到86

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-05
 Private Sub Form_Load()
    Dim a As String, b As Variant, c As Variant, i As Long, j As Long, m As Long, n As String
    Open "D:/scores.txt" For Binary As 1
        a = Input(LOF(1), #1)
    Close #1
    b = Split(a, vbCrLf)
    c = Split(b(1), " ")
    For i = UBound(c) To 1 Step -1
        For j = 1 To i
            If Val(c(j - 1)) > Val(c(j)) Then
                n = c(j - 1)
                c(j - 1) = c(j)
                c(j) = n
            End If
        Next j
    Next i
    'For i = 0 To UBound(c)
    '    Debug.Print c(i)
    'Next i
    Debug.Print Join(c, ",")
End Sub

本回答被提问者采纳
第2个回答  2015-03-13
改这里试试
if val(c(i)) > val(c(j)) then
n=c(i)
......追问

最大值能显示了,但是最小值还是显示不出来,你看下: