Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以矩阵格式打印二维数组_Java_Arrays_Matrix_Multidimensional Array - Fatal编程技术网

Java 以矩阵格式打印二维数组

Java 以矩阵格式打印二维数组,java,arrays,matrix,multidimensional-array,Java,Arrays,Matrix,Multidimensional Array,如何以矩阵框格式打印一个简单的int[][],就像我们手写矩阵的格式一样。简单的循环运行显然不起作用。如果有帮助的话,我将尝试在linux ssh终端中编译此代码 for(int i=0;iSystem.out.print(“|”+el+”); System.out.println(“|”); }; 消费者喜好列表=(行)->{ 系统输出打印(“[”); Arrays.stream(row.forEach((el)->System.out.print(“+el+”); System.out.pr

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

for(int i=0;i
int[]矩阵={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
//如下所示使用foreach循环以避免IndexOutOfBoundException
//需要检查矩阵!=如果实现为方法,则为null
//对于矩阵中的每一行
对于(int[]行:矩阵){
//对于行中的每个数字
用于(int j:行){
系统输出打印(j+“”);
}
System.out.println(“”);
}
int[]矩阵={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12}
};
打印矩阵(矩阵);
public void打印矩阵(int[]m){
试一试{
int行=m.length;
int columns=m[0]。长度;
字符串str=“| \t”;
对于(int i=0;i
输出:

|   1   2   3   |
|   4   5   6   |
|   7   8   9   |
|   10  11  12  |
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 
(   1   2   3   )
(   4   5   6   )
(   7   8   9   )
(   10  11  12  )

DONE
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
公共类矩阵{
公共静态void main(字符串[]args){
双矩阵[][]={
{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;
对于(i=0;i<4;i++){
对于(j=0;j<4;j++)
系统输出打印(矩阵[i][j]+“”);
System.out.println();
}
}
}
输出:

|   1   2   3   |
|   4   5   6   |
|   7   8   9   |
|   10  11  12  |
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 
(   1   2   3   )
(   4   5   6   )
(   7   8   9   )
(   10  11  12  )

DONE
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

要正确格式化列中的数字,最好使用printf。根据最大值或最小值的大小,您可能需要调整模式
“%4d”
。例如,要允许任何介于
integer.MIN\u值
integer.MAX\u值
之间的整数,请使用
“%12d”

以Java 8的方式:

导入java.util.array;
公共类矩阵打印机{
公共静态void main(字符串[]args){
最终整数[]矩阵=新整数[4][4];
打印矩阵(矩阵);
}
公共静态void打印矩阵(int[][]矩阵){
Arrays.stream(矩阵).forEach((行)->{
系统输出打印(“[”);
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
方法:

导入java.util.array;
导入java.util.function.Consumer;
公共类矩阵打印机{
公共静态void main(字符串[]args){
最终整数[]矩阵=新整数[3][3];
消费者节点限制=(行)->{
Arrays.stream(row.forEach((el)->System.out.print(“+el+”);
System.out.println();
};
使用者管道分隔符=(行)->{
Arrays.stream(row.forEach((el)->System.out.print(“|”+el+”);
System.out.println(“|”);
};
消费者喜好列表=(行)->{
系统输出打印(“[”);
Arrays.stream(row.forEach((el)->System.out.print(“+el+”);
System.out.println(“]);
};
打印矩阵(矩阵、节点限制);
System.out.println();
printMatrix(矩阵、管道分隔符);
System.out.println();
printMatrix(矩阵,LikeList);
}
公共静态void打印矩阵(int[][]矩阵,用户行打印机){
Arrays.stream(matrix.forEach((行)->rowPrinter.accept(行));
}
}
结果是:

 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 ]

下面是我使用
StringBuilder
数组显示二维整数数组的有效方法

publicstaticvoidprintmatrix(int[]arr){
if(null==arr | | arr.length==0){
//空或空矩阵
返回;
}
intidx=-1;
StringBuilder[]sbArr=新StringBuilder[arr.length];
对于(int[]行:arr){
sbArr[++idx]=新的StringBuilder(“(\t”);
用于(内部元素:行){
sbArr[idx].append(elem+“\t”);
}
sbArr[idx].追加(“)”;
}
对于(int i=0;i
输出:

|   1   2   3   |
|   4   5   6   |
|   7   8   9   |
|   10  11  12  |
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 
(   1   2   3   )
(   4   5   6   )
(   7   8   9   )
(   10  11  12  )

DONE
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

函数调用 输出
控制台中

公共静态void main(字符串[]args){
int[]ar={
{12, 33, 23},
{34, 56, 75},
{14, 76, 89},
{45, 87, 20}};
我更喜欢在Java中使用增强的循环

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

for(int[]num:ar){
for(int ele:num){
系统输出打印(“+ele”);
}
System.out.println(“”);
}
}
自Java 8以来:

int[][]矩阵={{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   |
|   10  11  12  |
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 
(   1   2   3   )
(   4   5   6   )
(   7   8   9   )
(   10  11  12  )

DONE
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]