2012-10-10 15 views
14

Mam tablicę 2D następująco:Druk 2D tablicy w formacie matrycy

long[,] arr = new long[4, 4] {{ 0, 0, 0, 0 }, 
           { 1, 1, 1, 1 }, 
           { 0, 0, 0, 0 }, 
           { 1, 1, 1, 1 }}; 

chcę wydrukować wartości tej tablicy w formacie matrycy jak:

0 0 0 0 
1 1 1 1 
0 0 0 0 
1 1 1 1 

Jak mogę to zrobić ?

Odpowiedz

23

Można zrobić to w ten sposób (z nieco zmodyfikowanej tablicy, aby pokazać działa dla tablic non-kwadrat):

 long[,] arr = new long[5, 4] { { 1, 2, 3, 4 }, { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 } }; 

     int rowLength = arr.GetLength(0); 
     int colLength = arr.GetLength(1); 

     for (int i = 0; i < rowLength; i++) 
     { 
      for (int j = 0; j < colLength; j++) 
      { 
       Console.Write(string.Format("{0} ", arr[i, j])); 
      } 
      Console.Write(Environment.NewLine + Environment.NewLine); 
     } 
     Console.ReadLine(); 
+0

Thnx Mark, pomógł mi .. – iCoder4777

+1

Zamiast "\ n" możesz użyć Environment.NewLine, jest to zalecane i zawsze działa –

+0

@ Nick: Masz rację, zmieniono przykład kodu. – markmuetz

3

tak:

long[,] arr = new long[4, 4] { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 0, 0, 0, 0 }, { 1, 1, 1, 1 } }; 

var rowCount = arr.GetLength(0); 
var colCount = arr.GetLength(1); 
for (int row = 0; row < rowCount; row++) 
{ 
    for (int col = 0; col < colCount; col++)    
     Console.Write(String.Format("{0}\t", arr[row,col])); 
    Console.WriteLine(); 
} 
+0

trzeba lewy pad numery tak, że kolumny wyrównanie – LeffeBrune

+0

To nie spowoduje wstawiania spacji między cyframi. – Bobson

+2

Twój przykład nie jest kompilowany na moim komputerze w VS2010 –

0

Twój może zrobić to w ten sposób w krótkich rękach.

 int[,] values=new int[2,3]{{2,4,5},{4,5,2}}; 

     for (int i = 0; i < values.GetLength(0); i++) 
     { 
      for (int k = 0; k < values.GetLength(1); k++) { 
       Console.Write(values[i,k]); 
      } 

      Console.WriteLine(); 
     } 
+0

Co ze spacjami między elementem tablicy. To robi różnicę wierszy. – baymax

0

Oto jak to zrobić w Jedności:

(Zmodyfikowana odpowiedź od @markmuetz więc należy upvote his answer)

int[,] rawNodes = new int[,] 
{ 
    { 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0 } 
}; 

private void Start() 
{ 
    int rowLength = rawNodes.GetLength(0); 
    int colLength = rawNodes.GetLength(1); 
    string arrayString = ""; 
    for (int i = 0; i < rowLength; i++) 
    { 
     for (int j = 0; j < colLength; j++) 
     { 
      arrayString += string.Format("{0} ", rawNodes[i, j]); 
     } 
     arrayString += System.Environment.NewLine + System.Environment.NewLine; 
    } 

    Debug.Log(arrayString); 
}