我试图使用一个包含5个单词的数组,并按照alpha顺序排列它们。我有点困惑,所以如果有人可以向我解释发生了什么,以及如何修复将非常感激的代码。
以下是代码:
Public Class Form1
Dim List() As String = {"bravo", "charlie", "zulu", "alpha", "whiskey"}
Dim swap, value As Integer
Dim i As Integer
Dim sw As String
Dim j, sp, x As Integer
Dim temp(0) As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = Nothing
For i = 0 To List.Length - 1
sw = List(i)
sp = i
For x = sp To List.Length - 2
Next
If sw > List(x) Then
temp(0) = List(x)
List(x) = sw
sw = temp(0)
End If
Next
For j = 0 To List.Length - 1
Label1.Text &= List(j) & ", "
Next
End Sub
结束班
答案 0 :(得分:0)
For x = sp To List.Length - 2
)为空。 List.Length - 2
?Dim temp As String
就够了。答案 1 :(得分:0)
您的代码的主要问题是使用sw
变量。问题在于,当您执行作业sw = temp(0)
时,您正在更改sw
指向的引用,而不是首先更改您分配的List(i)
的原始sw
。您实际上是在更新临时变量而不是原始列表。
以下是您的代码应该是什么样的:
For i = 0 To List.Length - 1
For x = i To List.Length - 1
If List(i) > List(x) Then
Dim temp = List(x)
List(x) = List(i)
List(i) = temp
End If
Next
Next
除了List
之外,我还删除了所有类级变量。它们都是不必要的。您需要保留的唯一一个是temp
(作为String
而不是String()
)并且我使用Button1_Click
方法。
当我在原始列表中运行此代码时,我得到了这个:
alpha, bravo, charlie, whiskey, zulu