The best way to print a Java 2D array?

JavaArraysMultidimensional ArrayPrinting2d

Java Problem Overview


I was wondering what the best way of printing a 2D array in Java was?

I was just wondering if this code is good practice or not?
Also any other mistakes I made in this code if you find any.

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();
}

Java Solutions


Solution 1 - Java

You can print in simple way.

Use below to print 2D array

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

Use below to print 1D array

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

Solution 2 - Java

I would prefer generally foreach when I don't need making arithmetic operations with their indices.

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

Solution 3 - Java

Simple and clean way to print a 2D array.

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

Solution 4 - Java

There is nothing wrong with what you have. Double-nested for loops should be easily digested by anyone reading your code.

That said, the following formulation is denser and more idiomatic java. I'd suggest poking around some of the static utility classes like Arrays and Collections sooner than later. Tons of boilerplate can be shaved off by their efficient use.

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

Solution 5 - Java

Two-liner with new line:

for(int[] x: matrix)
			System.out.println(Arrays.toString(x));

One liner without new line:

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

Solution 6 - Java

That's the best I guess:

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }

Solution 7 - Java

|1 2 3|
|4 5 6| 

Use the code below to print the values.

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

Output will look like this (the whole matrix in one line):

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

Solution 8 - Java

From Oracle Offical Java 8 Doc:

public static String deepToString(Object[] a) > > Returns a string representation of the "deep contents" of the > specified array. If the array contains other arrays as elements, the > string representation contains their contents and so on. This method > is designed for converting multidimensional arrays to strings.

Solution 9 - Java

@Ashika's answer works fantastically if you want (0,0) to be represented in the top, left corner, per standard matrix convention. If however you would prefer to put (0,0) in the lower left hand corner, in the style of the standard coordinate system, you could use this:

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

This used LIFO (Last In First Out) to reverse the order at print time.

Solution 10 - Java

System.out.println(Arrays.deepToString(array)
                         .replace("],","\n").replace(",","\t| ")
                         .replaceAll("[\\[\\]]", " "));

You can remove unwanted brackets with .replace(), after .deepToString if you like. That will look like:

 1 	|  2  |  3
 4	|  5  |  6
 7	|  8  |  9
 10	|  11 |  12
 13	|  15 |  15

Solution 11 - Java

With Java 8 using Streams and ForEach:

	Arrays.stream(array).forEach((i) -> {
		Arrays.stream(i).forEach((j) -> System.out.print(j + " "));
		System.out.println();
	});

The first forEach acts as outer loop while the next as inner loop

Solution 12 - Java

Try this,

for (char[] temp : box) {
    System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}

Solution 13 - Java

Adapting from https://stackoverflow.com/a/49428678/1527469 (to add indexes):

System.out.print(" ");
for (int row = 0; row < array[0].length; row++) {
	System.out.print("\t" + row );
}
System.out.println();
for (int row = 0; row < array.length; row++) {
	for (int col = 0; col < array[row].length; col++) {
		if (col < 1) {
			System.out.print(row);
			System.out.print("\t" + array[row][col]);
		} else {

			System.out.print("\t" + array[row][col]);
		}
	}
	System.out.println();
}

Solution 14 - Java

class MultidimensionalArray {
    public static void main(String[] args) {

        // create a 2d array
        int[][] a = {
                {1, -2, 3},
                {-4, -5, 6, 9},
                {7},
        };

        // first for...each loop access the individual array
        // inside the 2d array
        for (int[] innerArray: a) {
            // second for...each loop access each element inside the row
            for(int data: innerArray) {
                System.out.println(data);
            }
        }
    }
}

You can do it like this for 2D array

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChip Goon LewinView Question on Stackoverflow
Solution 1 - JavaPrabhakaran RamaswamyView Answer on Stackoverflow
Solution 2 - JavasnrView Answer on Stackoverflow
Solution 3 - JavamatthewpliddyView Answer on Stackoverflow
Solution 4 - JavaashikaView Answer on Stackoverflow
Solution 5 - Javasuvojit_007View Answer on Stackoverflow
Solution 6 - JavaPlcodeView Answer on Stackoverflow
Solution 7 - JavaBaseemView Answer on Stackoverflow
Solution 8 - JavaZhaoGangView Answer on Stackoverflow
Solution 9 - JavaMax von HippelView Answer on Stackoverflow
Solution 10 - JavaMark GunView Answer on Stackoverflow
Solution 11 - Javadrac_oView Answer on Stackoverflow
Solution 12 - JavaNambi_0915View Answer on Stackoverflow
Solution 13 - JavaawgtekView Answer on Stackoverflow
Solution 14 - JavaDhruvadeepView Answer on Stackoverflow