一道VB排序题

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:55:47
在文本框Text1中输入一系列以一个空格间隔的数据(如:2 1 3 6 4 7 5),把它们放入数组后,按数值从小到大排序,并将排序后的数组以一个英文","间隔显示在文本框Text2中(如:1,2,3,4,5,6,7,)。界面如图所示,程序在命令按钮"command1"的单击事件中完成
提示:
1.将一系列以空格间隔的数据放入数组可以采用以下语句:
Dim x
x = Split(Trim(Text1.Text)) 文本框数据以空格为分隔符把数据分割到数组x中,数组下界为0,上界为UBound(x)
2.输出的Text2文本框中不包含空格等其它多余字符。

【我做的】
Private Sub Command1_Click()
Dim x
x = Split(Trim(Text1.Text))
For i = 0 To (UBound(x) - 1)
For j = i + 1 To UBound(x)
If x(i) > x(j) Then
temp = x(i): x(i) = x(j): x(j) = temp
End If
Next j
Next i
Text2.Text = ""
For i = 0 To UBound(x)
Text2.Text = Text2.Text + x(i) + ","
Next i
End Sub

排序时对时错
请帮我看看错在哪里(希望能详细说出我错在哪里)
PS:这道题就是要求用选择法排序的

If x(i) > x(j)
改成
If Val(x(i)) > Val(x(j))

x是从字符串中分割出来的,默认为字符串,所以一定要转换为数值形式进行比较哦

Private Sub Command1_Click()
Dim x
x = Split(Trim(Text1.Text))
For i = 0 To (UBound(x) - 1)
For j = i + 1 To UBound(x)
If Val(x(i)) > Val(x(j)) Then
temp = x(i): x(i) = x(j): x(j) = temp
End If
Next j
Next i
Text2.Text = ""
For i = 0 To UBound(x)
Text2.Text = Text2.Text + x(i) + ","
Next i
End Sub
定义x为variant型,比较会出错