我想知道打印2D阵列的最佳方式是什么。这是我的一些代码,我只是想知道这是不是很好的做法。如果您发现任何其他错误,请更正我在此代码中所犯的任何错误。谢谢!
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();
}
答案 0 :(得分:115)
您可以用简单的方式打印。
使用以下方法打印2D数组
int[][] array = new int[rows][columns];
System.out.println(Arrays.deepToString(array));
使用以下方法打印1D阵列
int[] array = new int[size];
System.out.println(Arrays.toString(array));
答案 1 :(得分:17)
当我不需要使用索引进行算术运算时,我更倾向于foreach
。
for (int[] x : array)
{
for (int y : x)
{
System.out.print(y + " ");
}
System.out.println();
}
答案 2 :(得分:16)
简单而干净的打印2D阵列的方法。
System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));
答案 3 :(得分:7)
你拥有的东西没有错。任何阅读代码的人都应该轻易消化双嵌套for循环。
也就是说,以下公式更密集,更具惯用性。我建议尽早探讨一些静态实用程序类,如Arrays和Collections。可以通过有效使用来减少大量的样板。
for (int[] row : array)
{
Arrays.fill(row, 0);
System.out.println(Arrays.toString(row));
}
答案 4 :(得分:4)
我认为这是最好的:
for (int[] row : matrix){
System.out.println(Arrays.toString(row));
}
答案 5 :(得分:1)
@ Ashika的回答非常有效,如果你想要(0,0)按照正常的CS惯例在左上角表示。但是,如果你更喜欢使用普通的数学约定并在左下角放置(0,0),你可以使用它:
LinkedList<String> printList = new LinkedList<String>();
for (char[] row: array) {
printList.addFirst(Arrays.toString(row));;
}
while (!printList.isEmpty())
System.out.println(printList.removeFirst());
这使用LIFO(后进先出)在打印时反转顺序。
答案 6 :(得分:1)
|1 2 3|
|4 5 6|
使用以下代码打印值。
System.out.println(Arrays.deepToString());
输出将如下所示(整行矩阵在一行中):
[[1,2,3],[4,5,6]]
答案 7 :(得分:1)
两行加换行符:
for(int[] x: matrix)
System.out.println(Arrays.toString(x));
一个没有换行的班轮:
System.out.println(Arrays.deepToString(matrix));
答案 8 :(得分:1)
在 Java 8 中使用 Streams 和 ForEach:
Arrays.stream(array).forEach((i) -> {
Arrays.stream(i).forEach((j) -> System.out.print(j + " "));
System.out.println();
});
第一个 forEach
作为外循环,下一个作为内循环
答案 9 :(得分:0)
尝试一下
for (char[] temp : box) {
System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}
答案 10 :(得分:0)
public static String deepToString(Object[] a)
返回字符串的“深层内容”的表示形式 指定的数组。如果该数组包含其他数组作为元素,则 字符串表示形式包含其内容,依此类推。这个方法 设计用于将多维数组转换为字符串。
答案 11 :(得分:0)
System.out.println(Arrays.deepToString(array)
.replace("],","\n").replace(",","\t| ")
.replaceAll("[\\[\\]]", " "));
如果需要,可以在.replace()
之后用.deepToString
删除不需要的括号。
看起来像这样:
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
10 | 11 | 12
13 | 15 | 15
答案 12 :(得分:0)
从https://stackoverflow.com/a/49428678/1527469开始适应(以添加索引):
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();
}
答案 13 :(得分:0)
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);
}
}
}
}
您可以对2D阵列执行此操作