2013-10-29 4 views
29

Ich frage mich, was der beste Weg zum Drucken eines 2D-Arrays war. Dies ist ein Code, den ich habe und ich habe mich nur gefragt, ob das eine gute Übung ist oder nicht. Berichtigen Sie mich auch in irgendwelchen anderen Fehlern, die ich in diesem Code machte, wenn Sie irgendwelche finden. Vielen Dank!Java - Die beste Methode zum Drucken von 2D-Arrays?

int rows = 5; 
int columns = 3; 

int[][] array = new int[rows][columns]; 

for(int i = 0; i<rows; i++) 
    for(int j = 0; j<columns; j++) 
     array[i][j] = 0; 

for(int i = 0; i<rows; i++) 
{ 
    for(int j = 0; j<columns; j++) 
    { 
     System.out.print(array[i][j]); 
    } 
    System.out.println(); 
} 
+3

Beste - durch welche Definition? –

+0

Ihre for-Schleifen wären sicherer, wenn sie die tatsächlichen Array-Längen verwenden würden. –

+1

Diese Frage scheint off-topic zu sein, weil es darum geht, Code ohne eine bestimmte Frage zu überprüfen, und gehört zu [codereview.se] –

Antwort

77

Sie können auf einfache Weise drucken.

Verwendung unter 2D-Array

int[][] array = new int[rows][columns]; 
System.out.println(Arrays.deepToString(array)); 

Verwenden unten zu drucken 1D-Array

int[] array = new int[size]; 
System.out.println(Arrays.toString(array)); 
+3

druckt alles auf einer einzigen Zeile, die nicht in Ordnung ist :( –

+0

@DangManhTrong dann schreibe ich eine for-Schleife mit einer Druckzeile – JakeWilson801

+3

Ich weiß, das ist ein wenig später, aber das druckt alles in separaten Zeilen aus.[Ich nahm dies von dieser Antwort so] (https://stackoverflow.com/questions/12845208/how-to-print-two-dimensional-array-like-table#17423410) 'System.out.println (Arrays.deepToString (twoDm) .replace ("],", "] \ n")); ' – wanderer0810

5

Es ist nichts falsch mit drucken, was Sie haben. Double-Nested for-Schleifen sollten von jedem, der Ihren Code liest, leicht verdaut werden.

Das heißt, die folgende Formulierung ist dichter und idiomatischer Java. Ich würde vorschlagen, früher als später einige statische Hilfsklassen wie Arrays und Collections zu stochern. Tonnen von Boilerplate können durch ihren effizienten Gebrauch abrasiert werden. in der oberen, linken Ecke dargestellt werden, je normaler CS Konvention

for (int[] row : array) 
{ 
    Arrays.fill(row, 0); 
    System.out.println(Arrays.toString(row)); 
} 
+0

Diese Lösung druckt Ihr Array mit (0,0) in der oberen linken Ecke (das ist die Konvention für die meisten Dinge in CS, wie z als GUI-Platzierung oder Pixel-Position in einem Bild). In vielen Nicht-cs-Szenarios sollte (0,0) in der unteren linken Ecke sein, in welchem ​​Fall eine foreach-Schleife nicht funktioniert. –

1

@ Antwort Ashika Werke fantastisch, wenn Sie (0,0) werden soll. Wenn aber doch lieber normale mathematische Konvention verwenden und setzt (0,0) in der unteren linken Ecke, können Sie dies nutzen könnten:

LinkedList<String> printList = new LinkedList<String>(); 
for (char[] row: array) { 
    printList.addFirst(Arrays.toString(row));; 
} 
while (!printList.isEmpty()) 
    System.out.println(printList.removeFirst()); 

Dieser verwendet LIFO (Last In First Out) den Auftrag rückgängig zu Druckzeit.

6

Ich würde generell foreach bevorzugen, wenn ich keine arithmetischen Operationen mit ihren Indizes machen muss.

for (int[] x : array) 
{ 
    for (int y : x) 
    { 
     System.out.print(y + " "); 
    } 
    System.out.println(); 
} 
3

Das ist das Beste, was ich denke:

for (int[] row : matrix){ 
    System.out.println(Arrays.toString(row)); 
    } 
1
|1 2 3| 
|4 5 6| 

Verwenden Sie den Code unter die Werte zu drucken.

System.out.println(Arrays.deepToString()); 

Ausgabe wie folgt aussehen (die gesamte Matrix in einer Zeile):

[[1,2,3],[4,5,6]] 
5

einfache und saubere Art und Weise ein 2D-Array zu drucken.

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]")); 
Verwandte Themen