Mencetak array 2D dalam format matriks

Bagaimana saya bisa mencetak int[][] sederhana dalam format kotak matriks seperti format yang kita gunakan untuk menulis matriks dengan tangan. Perulangan sederhana tampaknya tidak berhasil. Jika membantu, saya mencoba mengkompilasi kode ini di terminal ssh linux.

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        System.out.println(matrix[i][j] + " ");
    }
    System.out.println();
}

person dawnoflife    schedule 21.02.2011    source sumber


Jawaban (9)


final int[][] matrix = {
  { 1, 2, 3 },
  { 4, 5, 6 },
  { 7, 8, 9 }
};

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}

Menghasilkan:

1 2 3
4 5 6
7 8 9
person Tyler Treat    schedule 21.02.2011

Untuk memformat angka dalam kolom dengan benar, sebaiknya gunakan printf. Bergantung pada seberapa besar angka maks atau min, Anda mungkin ingin menyesuaikan pola "%4d". Misalnya untuk mengizinkan bilangan bulat antara Integer.MIN_VALUE dan Integer.MAX_VALUE, gunakan "%12d".

public void printMatrix(int[][] matrix) {
    for (int row = 0; row < matrix.length; row++) {
        for (int col = 0; col < matrix[row].length; col++) {
            System.out.printf("%4d", matrix[row][col]);
        }
        System.out.println();
    }
}

Contoh keluaran:

 36 913 888 908
732 626  61 237
  5   8  50 265
192 232 129 307
person stivlo    schedule 02.08.2014

int[][] matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
        {10, 11, 12}
};

printMatrix(matrix);
public void printMatrix(int[][] m) {
    try {
        int rows = m.length;
        int columns = m[0].length;
        String str = "|\t";

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                str += m[i][j] + "\t";
            }
            System.out.println(str + "|");
            str = "|\t";
        }
    } catch (Exception e) {
        System.out.println("Matrix is empty!!");
    }
}

Keluaran:

|   1   2   3   |
|   4   5   6   |
|   7   8   9   |
|   10  11  12  |
person Yuuta    schedule 21.02.2011

Dalam mode Java 8:

import java.util.Arrays;

public class MatrixPrinter {
  public static void main(String[] args) {
    final int[][] matrix = new int[4][4];
    printMatrix(matrix);
  }

  public static void printMatrix(int[][] matrix) {
    Arrays.stream(matrix).forEach((row) -> {
      System.out.print("[");
      Arrays.stream(row).forEach((el) -> System.out.print(" " + el + " "));
      System.out.println("]");
    });
  }
}

Ini menghasilkan:

[ 0  0  0  0 ]
[ 0  0  0  0 ]
[ 0  0  0  0 ]
[ 0  0  0  0 ]

Namun karena kita ada di sini, mengapa tidak membuat tata letak baris dapat disesuaikan?

Yang kita butuhkan hanyalah meneruskan lamba ke metode matrixPrinter:

import java.util.Arrays;
import java.util.function.Consumer;

public class MatrixPrinter {
  public static void main(String[] args) {
    final int[][] matrix = new int[3][3];

    Consumer<int[]> noDelimiter = (row) -> {
      Arrays.stream(row).forEach((el) -> System.out.print(" " + el + " "));
      System.out.println();
    };

    Consumer<int[]> pipeDelimiter = (row) -> {
      Arrays.stream(row).forEach((el) -> System.out.print("| " + el + " "));
      System.out.println("|");
    };

    Consumer<int[]> likeAList = (row) -> {
      System.out.print("[");
      Arrays.stream(row).forEach((el) -> System.out.print(" " + el + " "));
      System.out.println("]");
    };

    printMatrix(matrix, noDelimiter);
    System.out.println();
    printMatrix(matrix, pipeDelimiter);
    System.out.println();
    printMatrix(matrix, likeAList);
  }

  public static void printMatrix(int[][] matrix, Consumer<int[]> rowPrinter) {
    Arrays.stream(matrix).forEach((row) -> rowPrinter.accept(row));
  }
}

Inilah hasilnya:

 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 ]
person Dalen    schedule 02.10.2016

public static void printMatrix(double[][] matrix) {
    for (double[] row : matrix) {
        for (double element : row) {
            System.out.printf("%5.1f", element);
        }
        System.out.println();
    }
}

Panggilan Fungsi

printMatrix(new double[][]{2,0,0},{0,2,0},{0,0,3}});

Keluaran

  2.0  0.0  0.0
  0.0  2.0  0.0
  0.0  0.0  3.0

Di konsol

Output Konsol

person Denys Vitali    schedule 26.04.2017

Sejak Java 8:

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

Arrays.stream(matrix).map(Arrays::toString).forEach(System.out::println);

Keluaran:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
person Community    schedule 12.06.2021

Inilah pendekatan efisien saya untuk menampilkan array integer 2D menggunakan array StringBuilder.

public static void printMatrix(int[][] arr) {
    if (null == arr || arr.length == 0) {
        // empty or null matrix
        return;
    }

    int idx = -1;
    StringBuilder[] sbArr = new StringBuilder[arr.length];

    for (int[] row : arr) {
        sbArr[++idx] = new StringBuilder("(\t");

        for (int elem : row) {
            sbArr[idx].append(elem + "\t");
        }

        sbArr[idx].append(")");
    }

    for (int i = 0; i < sbArr.length; i++) {
        System.out.println(sbArr[i]);
    }
    System.out.println("\nDONE\n");
}

Keluaran:

(   1   2   3   )
(   4   5   6   )
(   7   8   9   )
(   10  11  12  )

DONE
person Devendra Lattu    schedule 01.04.2017

public class Matrix {
    public static void main(String[] args) {
        double Matrix[][] = {
                {0*1, 0*2, 0*3, 0*4},
                {0*1, 1*1, 2*1, 3*1},
                {0*2, 1*2, 2*2, 3*2},
                {0*3, 1*3, 2*3, 3*3}};

        int i, j;
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4; j++)
                System.out.print(Matrix[i][j] + " ");
            System.out.println();
        }
    }
}

Keluaran:

0.0 0.0 0.0 0.0 
0.0 1.0 2.0 3.0 
0.0 2.0 4.0 6.0 
0.0 3.0 6.0 9.0 
person ajit kumar    schedule 02.03.2013

Saya lebih suka menggunakan loop yang ditingkatkan di Java

Karena ar kita adalah array dari array [2D]. Jadi, saat Anda mengulanginya, pertama-tama Anda akan mendapatkan array, lalu Anda dapat mengulangi array tersebut untuk mendapatkan elemen individual.

public static void main(String[] args) {
    int[][] ar = {
            {12, 33, 23},
            {34, 56, 75},
            {14, 76, 89},
            {45, 87, 20}};

    for (int[] num : ar) {
        for (int ele : num) {
            System.out.print(" " + ele);
        }
        System.out.println(" ");
    }
}

Keluaran:

 12 33 23 
 34 56 75 
 14 76 89 
 45 87 20 
person Vishwa Ratna    schedule 26.05.2018