2014-11-25 5 views
0

Visual Basic을 배우려고 노력 중이므로 사용자가 이름, 성, 전화 번호, 주소로 시작하는 간단한 정보를 입력하는 간단한 프로그램을 작성하기로했습니다. 부서.알파벳 순서로 2 차원 배열을 정렬하는 방법

그러나 직원이 3 명인 경우 이름이 "a"로 시작하고 두 번째로 "d"로 시작하고 세 번째로 "b"로 시작하는 경우 어떻게 배열이 사전 순으로 정렬되어 "a"아래의 정보의 첫 번째 열, "b"아래의 두 번째 열 및 "d"아래의 마지막 열. 필자는 불필요한 코드를 제거했다.

도움을 주시면 감사하겠습니다.

Public Class StartForm 

Dim FirstName As String 
Dim LastName As String 
Dim BothName As String 
Dim FinalOutPut As String 
Dim PhoneNumber As String 
Dim Address As String 
Dim Department As String 
Dim SickDays As Integer 
Dim AnnualDays As Integer 

Dim arrayname(4, 1) As String 
Dim countname As Integer = 0 
Public Sub savebutton_Click(sender As Object, e As EventArgs) Handles savebutton.Click 
    ' for names 
    'REMINDER - y then x 
    If countname = 0 Then 
     arrayname(0, countname) = FirstNameBox.Text 
     arrayname(1, countname) = LastNameBox.Text 
     arrayname(2, countname) = PhoneBox.Text 
     arrayname(3, countname) = AdressBox.Text 
     arrayname(4, countname) = DepartBox.Text 

     ReDim Preserve arrayname(4, countname) 

    Else 
     arrayname(0, countname) = FirstNameBox.Text 
     arrayname(1, countname) = LastNameBox.Text 
     arrayname(2, countname) = PhoneBox.Text 
     arrayname(3, countname) = AdressBox.Text 
     arrayname(4, countname) = DepartBox.Text 

     ReDim Preserve arrayname(4, countname + 1) 

    End If 
End Sub 

Private Sub displayButton_Click(sender As Object, e As EventArgs) Handles displaybutton.Click 
    Dim time As String 
    Dim Sickdays As String 
    Dim Annualdays As String 
    time = getButton() 
    Sickdays = getSickDays() 
    Annualdays = getAnnualDays() 
    'test 
    For Names = 0 To countname 

     'Final output 
     FinalOutPut = arrayname(0, Names) + " " + arrayname(1, Names) + " is " + time + " on time for work," + Environment.NewLine + 
      "Sick Days: " + Sickdays + Environment.NewLine + "Annual Days:" + Annualdays + Environment.NewLine + "Address:" + arrayname(3, Names) + 
      Environment.NewLine + "Phone Number:" + 
      arrayname(2, Names) + Environment.NewLine + "Department: " + arrayname(4, Names) 
     OutputTextBox.Text = FinalOutPut 
     Names = Names + 1 
    Next 

End Sub 

End Class 
+0

는 정렬 알고리즘에 대해 배우고 싶다거나하는 방법을 알고 싶은가 이거 정렬 해? 배열을 정렬하는 대신 List <> 요소를 사용하는 것이 더 좋을 수도 있습니다.이 배열을 사용하면 LINQ를 사용하여 myList.OrderBy()를 사용하여 정렬 할 수 있습니다. –

+0

프로젝트를 포기하고 싶지는 않습니다. – Ky6000

답변

1

내가 처음에는 수업을 만들었습니다. 예 : 사람. 그런 다음 ListOf(Person)에 넣을 것입니다.

사람 클래스 예에게 ... 작은 예를 들어 아래를 참조

Option Strict On 
Option Explicit On 

Public Class Person 

     Public Property FirstName As String 
     Public Property LastName As String 

End Class 

StartForm

Option Strict On 
Option Explicit On 

Public Class StartForm 

     Private lstPerson As New List(Of Person) 'Add to this list of Person 

     Public Sub savebutton_Click(sender As Object, e As EventArgs) Handles savebutton.Click 
     'Declare how many persons you want? 
      Dim pOne, pTwo, pThree As New Person 

     'Set their properties 
      With pOne 
      .FirstName = "Bobby" 
      .LastName = "Walters" 
      End With 

      With pTwo 
      .FirstName = "Shane" 
      .LastName = "Waldo" 
      End With 

      With pThree 
      .FirstName = "Harry" 
      .LastName = "Waters" 
      End With 

      'Add them to the list now 
      lstPerson.AddRange({pOne, pTwo, pThree}) 

      'Sort by last name/first name. You can change this... 
      lstPerson = lstPerson.OrderBy(Function(x) x.LastName).ToList 

     End Sub 

End Class 
+0

Mabye 목록은 유일한 방법입니다 ... 감사 합니다만, 정말로 필요한 사람 수업입니까? – Ky6000

+0

예, 좋았습니다. 또한 당신은 당신이 그것에서 원하는 것을 얻을 수 있습니다 ... 또한 사람의 컬렉션을하고 있어요, 이것 역시 orderby를 수행하는 데 필요합니다 ... – Codexer

+0

하지만이 목록을 사용하면 배열처럼 동적이 아닙니다. 내가 원하는만큼 많은 사람들을 추가하는 대신 크기를 알아야할까요? – Ky6000