以Matrix格式打印出二维数组

如何以矩阵框格式打印出一个简单的int [] [],就像我们手写矩阵的格式一样。简单的循环运行显然不起作用。 如果它有助于我尝试在linux ssh终端中编译此代码。

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

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

生产:

 1 2 3 4 5 6 7 8 9 
 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 

输出:

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

要正确设置列中的数字格式,最好使用printf 。 根据最大或最小数字的大小,您可能需要调整模式"%4d" 。 例如,要允许Integer.MIN_VALUEInteger.MAX_VALUE之间的任何整数,请使用"%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(); } } 

输出示例:

  36 913 888 908 732 626 61 237 5 8 50 265 192 232 129 307 
  int[][] matrix = { {1,2,3}, {4,5,6}, {7,8,9} }; //use foreach loop as below to avoid IndexOutOfBoundException //need to check matrix != null if implements as a method //for each row in the matrix for (int[] row : matrix) { //for each number in the row for (int j : row) { System.out.print(j + " "); } System.out.println(""); } 

在java8时尚:

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

这会产生

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

但既然我们在这里为什么不让行布局可定制?

我们需要的是将lamba传递给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 noDelimiter = (row) -> { Arrays.stream(row).forEach((el) -> System.out.print(" " + el + " ")); System.out.println(); }; Consumer pipeDelimiter = (row) -> { Arrays.stream(row).forEach((el) -> System.out.print("| " + el + " ")); System.out.println("|"); }; Consumer 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 rowPrinter) { Arrays.stream(matrix) .forEach((row) -> rowPrinter.accept(row)); } } 

这是结果:

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

这是我使用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"); } 

在此处输入图像描述

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

function调用

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

输出:

  2.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 3.0 

在控制台中:

控制台输出

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

我更喜欢在Java中使用增强型循环

因为我们的ar是一个数组 [2D] 的数组 。 因此,当您迭代它时,您将首先获得一个数组,然后您可以迭代该array以获取单个元素。

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