2017-04-06 5 views
0

こんにちは、私のコードに問題があります! 私たちは、text.txtファイルから名前のリストを整理して、それらがlitsボックスに表示されるようにします(その部分を持っています:)。リストボックスから配列を作成し、その配列を(独自のソート方法を使用して)ソートし、ボタンを使用して順序を整理し、別のボタンを順番に整理することを求められます。オーダー名の結果が別のリストボックスに表示されます。 2番目のリストボックスに表示されるリストの最後の名前だけを取得しましたが、コードにエラーがなく、名前を正しく並べ替えられませんでした。助けて!!!!!ここビジュアル基本配列リストボックスからのソート

は私のコードです:)

Public Class FileSort 
Dim sr As IO.StreamReader = IO.File.OpenText("C:\Users\Inspiron 15\documents\visual studio 2010\Projects\assigment4 EL\assigment4 EL\names.txt") 

Structure names 
Dim c As Integer 
Dim fullname As String 
End Structure 

Dim allNames(99) As names 

Private Sub btnName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnName.Click 

Do While sr.Peek <> -1 
    Name = sr.ReadLine 
    LstNames.Items.Add(Name & " ") 
Loop 
sr.Close() 

End Sub 
Private Sub bubbelsort(ByRef names() As System.String, ByVal c As Integer) 
c = 0 
names(c) = sr.ReadLine() 
c = c * 1 
For c = 1 To 99 Step +1 '~~~ Addding (Z to A) to the the Listbox 
    lstOrderedNames.Items.Add(Name & "")' 
Next 

End Sub 
Private Sub BtnAssend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAssend.Click 

Dim names(99) As String 
Dim c As Integer 
c = 0 
Dim A As Integer 
A = 99 
names(c) = sr.ToString 
c = c + 1 
For c = 1 To 99 Step +1 '~~~ Addding (Z to A) to the the Listbox 
    lstOrderedNames.Items.Add(Name & "") 
Next 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDessend.Click 
Dim names(99) As String 
Dim c As Integer 
c = 0 
Dim A As Integer 
A = 99 
names(c) = sr.ToString 
names(A) = sr.ToString 
A = A - 1 
For A = 99 To 0 Step -1 '~~~ Addding (Z to A) to the the Listbox 
    lstOrderedNames.Items.Add(Name & "") 
Next 
End Sub 

enter image description here

+0

あなたはまた、それはあなた自身のソート方法を使用するものとしてカウントされない場合を除き、「治療」 – user3598756

答えて

0

あなたの問題はソートアルゴリズム(私はこれを正しく理解している場合)であるので、あなたは、LINQ

ListBox1.Items.Add("Battle") 
ListBox1.Items.Add("Cattle") 
ListBox1.Items.Add("apple") 

ListBox2.DataSource = (From l In ListBox1.Items 
         Select l Order By l Ascending).ToList 
+0

の前と後のデータの例をいくつか追加することもできます。 – ThatGuy

+0

よろしくお願いします。 VBソート関数を使用するカテゴリに分類されている独自のソート方法または線量を作成することに数えます。 –

+0

これは間違いなく組み込みのソート方法です。あなたは同じ方法で独自のソート方法を使うことができますが、後で投稿する必要があります。なぜなら、私が現時点でできるよりも少し複雑ですからです。 – ThatGuy

0

を使用することができます。

まず、配列が必要です。

Dim arr(ListBox1.Items.Count - 1) As String 
For i As Integer = 0 To arr.Length - 1 
    arr(i) = CStr(ListBox1.Items(i)) 
Next 

次にソートアルゴリズム。あなたはBubbleSortに行きたいと思っていたので:

Private Sub StringBubbleSort(arr As String) 
    For i As Integer = 0 To arr.Length - 1 
     For j As Integer = 0 To arr.Length - 2 - i 
      If String.Compare(arr(j), arr(j + 1)) > 0 Then 
       Dim temp As String = arr(j) 
       arr(j) = arr(i) 
       arr(i) = temp 
      End If 
     Next 
    Next 
End Sub 

この機能を使用して、2番目のListBoxに配列をコピーします。

StringBubbleSort(arr) 
ListBox2.Items.AddRange(arr) 

String.Compare:https://msdn.microsoft.com/de-de/library/84787k22(v=vs.110).aspx

関連する問題