VB.Net Tutorial/Collections/Multiple dimensional array

Материал из VB Эксперт
Перейти к: навигация, поиск

Declare the jagged array as 4 rows high

<source lang="vbnet">Option Strict On

Imports System
Public Class Tester
    Public Shared Sub Main()
        Const rowsUB As Integer = 3  " upper bounds
        Const rowZero As Integer = 5
        Const rowOne As Integer = 2
        Const rowTwo As Integer = 3
        Const rowThree As Integer = 5
        Dim i As Integer
        
        Dim jaggedArray(rowsUB)() As Integer
        ReDim jaggedArray(0)(rowZero)
        ReDim jaggedArray(1)(rowOne)
        ReDim jaggedArray(2)(rowTwo)
        ReDim jaggedArray(3)(rowThree)
        jaggedArray(0)(3) = 15
        jaggedArray(1)(1) = 12
        jaggedArray(2)(1) = 9
        jaggedArray(2)(2) = 99
        jaggedArray(3)(0) = 10
        jaggedArray(3)(1) = 11
        jaggedArray(3)(2) = 12
        jaggedArray(3)(3) = 13
        jaggedArray(3)(4) = 14
        For i = 0 To rowZero
            Console.WriteLine("jaggedArray(0)({0}) = {1}", _
                i, jaggedArray(0)(i))
        Next
        For i = 0 To rowOne
            Console.WriteLine("jaggedArray(1)({0}) = {1}", _
                i, jaggedArray(1)(i))
        Next
        For i = 0 To rowTwo
            Console.WriteLine("jaggedArray(2)({0}) = {1}", _
                i, jaggedArray(2)(i))
        Next
        For i = 0 To rowThree
            Console.WriteLine("jaggedArray(3)({0}) = {1}", _
                i, jaggedArray(3)(i))
        Next
    End Sub
End Class</source>
jaggedArray(0)(0) = 0
jaggedArray(0)(1) = 0
jaggedArray(0)(2) = 0
jaggedArray(0)(3) = 15
jaggedArray(0)(4) = 0
jaggedArray(0)(5) = 0
jaggedArray(1)(0) = 0
jaggedArray(1)(1) = 12
jaggedArray(1)(2) = 0
jaggedArray(2)(0) = 0
jaggedArray(2)(1) = 9
jaggedArray(2)(2) = 99
jaggedArray(2)(3) = 0
jaggedArray(3)(0) = 10
jaggedArray(3)(1) = 11
jaggedArray(3)(2) = 12
jaggedArray(3)(3) = 13
jaggedArray(3)(4) = 14
jaggedArray(3)(5) = 0

Define and initialize the two dimensional array

<source lang="vbnet">Imports System Class Tester

  Public Shared Sub Main()
      Const rowsUB As Integer = 4
      Const columnsUB As Integer = 3
      
      Dim rectangularArray As Integer(,) = _
      {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {9, 10, 11}}
      Dim i As Integer
      For i = 0 To rowsUB - 1
          Dim j As Integer
          For j = 0 To columnsUB - 1
              Console.WriteLine( _
               "rectangularArray[{0},{1}] = {2}", _
               i, j, rectangularArray(i, j))
          Next j
      Next i
  End Sub "Run
  

End Class</source>

rectangularArray[0,0] = 0
rectangularArray[0,1] = 1
rectangularArray[0,2] = 2
rectangularArray[1,0] = 3
rectangularArray[1,1] = 4
rectangularArray[1,2] = 5
rectangularArray[2,0] = 6
rectangularArray[2,1] = 7
rectangularArray[2,2] = 8
rectangularArray[3,0] = 9
rectangularArray[3,1] = 10
rectangularArray[3,2] = 11

Initialize two dimensional array by index

<source lang="vbnet">Public Class Tester

   Public Shared Sub Main
   
       Dim SqaresTable(5, 1) As Integer
   
       SqaresTable(0, 0) = 0
       SqaresTable(0, 1) = 0
       SqaresTable(1, 0) = 1
       SqaresTable(1, 1) = 1
       SqaresTable(2, 0) = 2
       SqaresTable(2, 1) = 4
       SqaresTable(3, 0) = 3
       SqaresTable(3, 1) = 9
       SqaresTable(4, 0) = 4
       SqaresTable(4, 1) = 16
       SqaresTable(5, 0) = 5
       SqaresTable(5, 1) = 25
   
       Console.WriteLine(SqaresTable(2, 1))
   
   End Sub

End Class</source>

4

Initializing multi-dimensional arrays

<source lang="vbnet">Module Tester

  Sub Main()
     Dim i, j As Integer
     " create rectangular two-dimensional array
     Dim array1 As Integer(,)
     array1 = New Integer(,) {{1, 2, 3}, {4, 5, 6}}
     " create jagged two-dimensional array
     Dim array2 As Integer()() = New Integer(2)() {}
     array2(0) = New Integer() {1, 2}
     array2(1) = New Integer() {3}
     array2(2) = New Integer() {4, 5, 6}
     For i = 0 To array1.GetUpperBound(0)
        For j = 0 To array1.GetUpperBound(1)
           Console.Write(array1(i, j) & "  ")
        Next
        Console.WriteLine("")
     Next
     For i = 0 To array2.GetUpperBound(0)
        For j = 0 To array2(i).GetUpperBound(0)
           Console.WriteLine(array2(i)(j) & "  ")
        Next
        Console.WriteLine("")
     Next
  End Sub 

End Module</source>

1  2  3
4  5  6
1
2
3
4
5
6

Jagged two-dimensional array example.

<source lang="vbnet">Module Tester

  Dim lastStudent, lastExam As Integer
  Sub Main()
     Dim i As Integer
     " jagged array with 3 rows of exam scores
     Dim gradeArray As Integer()() = New Integer(2)() {}
     gradeArray(0) = New Integer() {7, 8, 6, 3}
     gradeArray(1) = New Integer() {8, 7, 9, 1}
     gradeArray(2) = New Integer() {0, 0, 6, 1}
     " upper bounds for array manipulations
     lastStudent = gradeArray.GetUpperBound(0)
     lastExam = gradeArray(0).GetUpperBound(0)
     Console.WriteLine("Lowest grade: " & _
        Minimum(gradeArray) & vbCrLf & "Highest grade: " & _
        Maximum(gradeArray))
     For i = 0 To lastStudent
        Console.WriteLine("Average for student " & _
           i & " is " & Average(gradeArray(i)))
     Next
  End Sub " Main
  Function Minimum(ByVal grades As Integer()()) _
     As Integer
     Dim lowGrade As Integer = 100
     Dim i, j As Integer
     For i = 0 To lastStudent
        For j = 0 To lastExam
           If grades(i)(j) < lowGrade Then
              lowGrade = grades(i)(j)
           End If
        Next
     Next
     Return lowGrade
  End Function " Minimum
  Function Maximum(ByVal grades As Integer()()) _
     As Integer
     Dim highGrade As Integer = 0
     Dim i, j As Integer
     For i = 0 To lastStudent
        For j = 0 To lastExam
           If grades(i)(j) > highGrade Then
              highGrade = grades(i)(j)
           End If
        Next
     Next
     Return highGrade
  End Function " Maximum
  Function Average(ByVal setOfGrades As Integer()) _
     As Double
     Dim i As Integer, total As Integer = 0
     For i = 0 To lastExam
        total += setOfGrades(i)
     Next
     Return total / setOfGrades.Length
  End Function " Average

End Module</source>

Lowest grade: 0
Highest grade: 9
Average for student 0 is 6
Average for student 1 is 6.25
Average for student 2 is 1.75

Rectangular Array

<source lang="vbnet">Option Strict On

Imports System
Class Tester
    Shared Sub Main()
        Const rowsUB As Integer = 4
        Const columnsUB As Integer = 3
        Dim rectangularArray(rowsUB, columnsUB) As Integer
        Dim i As Integer
        For i = 0 To rowsUB - 1
            Dim j As Integer
            For j = 0 To columnsUB - 1
                rectangularArray(i, j) = i + j
            Next j
        Next i
        For i = 0 To rowsUB - 1
            Dim j As Integer
            For j = 0 To columnsUB - 1
                Console.WriteLine( _
                  "rectangularArray[{0},{1}] = {2}", _
                  i, j, rectangularArray(i, j))
            Next j
        Next i
    End Sub
End Class</source>
rectangularArray[0,0] = 0
rectangularArray[0,1] = 1
rectangularArray[0,2] = 2
rectangularArray[1,0] = 1
rectangularArray[1,1] = 2
rectangularArray[1,2] = 3
rectangularArray[2,0] = 2
rectangularArray[2,1] = 3
rectangularArray[2,2] = 4
rectangularArray[3,0] = 3
rectangularArray[3,1] = 4
rectangularArray[3,2] = 5

Reference elements in two dimensional array

<source lang="vbnet">public class Test

  public Shared Sub Main
       Dim aryBoard(9, 9) As Integer
       "Move the element.
       aryBoard(0, 0) = 0
       aryBoard(2, 4) = 1
       "Check for the element.
       If aryBoard(0, 0) = 1 Then
           Console.WriteLine("The piece was found.")
       Else
           Console.WriteLine("The piece was not found.")
       End If
  End Sub

End class</source>

The piece was not found.

Set the array of arrays

<source lang="vbnet">public class Test

  public Shared Sub Main
       Dim aryIntArray(9) As Integer
       Dim aryStrArray(99) As String
       Dim aryBigArray(1) As Object
       Dim intCounter As Integer
       "Populate array aryIntArray.
       For intCounter = 0 To 9
           aryIntArray(intCounter) = intCounter
       Next
       "Populate array aryStrArray.
       For intCounter = 0 To 99
           aryStrArray(intCounter) = "ITEM: " & intCounter.ToString("0000")
       Next
       "Set the array of arrays.
       aryBigArray(0) = aryIntArray
       aryBigArray(1) = aryStrArray
       "Display some array values.
       Console.WriteLine(aryBigArray(0)(7))
       Console.WriteLine(aryBigArray(1)(16))
  End Sub

End class</source>

7
ITEM: 0016

Use For Each/Next to find an element in a two dimension array

<source lang="vbnet">Module modForEach

  Sub Main()
     Dim gradeArray As Integer(,) = New Integer(,) _
        {{77, 68, 86, 73}, {98, 87, 89, 81}, {70, 90, 86, 81}}
     Dim grade As Integer
     Dim lowGrade As Integer = 100
     For Each grade In gradeArray
        If grade < lowGrade Then
           lowGrade = grade
        End If
     Next
     Console.WriteLine("The minimum grade is: {0}", lowGrade)
  End Sub " Main

End Module</source>

The minimum grade is: 68