我如何以矩阵盒格式打印一个简单的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();
}
我如何以矩阵盒格式打印一个简单的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
"%4d"
。例如,如果要允许Integer.MIN_VALUE
和Integer.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},
{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!!");
}
}
输出:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
| 10 11 12 |
按照 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("]");
});
}
}
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
既然我们在这里,为什么不将行布局定制化呢?
我们只需要向matrixPrinter
方法传递一个lambda表达式:
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));
}
}
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 ]
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("");
}
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Arrays.stream(matrix).map(Arrays::toString).forEach(System.out::println);
输出:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
我更喜欢在Java中使用增强型循环
由于我们的ar
是一个二维数组,所以当你迭代它时,你会先得到一个数组,然后你可以迭代那个数组
来获取单独的元素。
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(" ");
}
}
输出:
12 33 23
34 56 75
14 76 89
45 87 20
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();
}
}
}
输出:
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
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");
}
输出:
( 1 2 3 )
( 4 5 6 )
( 7 8 9 )
( 10 11 12 )
DONE