在Java中,如何打印多维数组最佳方式是什么?

4

我最近开始在Java中使用多维整型数组。在此之前,一维数组已经足够。

要打印这些数组,我使用了System.out.println(Arrays.toString(myarray));

但是它不能用于多维数组,它只会像直接打印一维数组一样,重复多次。


遍历每个维度并使用 Arrays.toString() - jmj
谢谢,那个有效 :) - user1529540
2
Arrays.deepToString() 更好。 - Paul Boddington
我尝试了一下,它可以工作,但是它把所有东西都放在一行里,这让阅读变得困难。 - user1529540
@JigarJoshi 我可以遍历第二维吗? - user1529540
4个回答

10

您需要遍历它。

最简单的方法是使用提供的Arrays.deepToString(),该方法在数组中搜索子数组。请注意,它与Arrays.toString()一样,仅适用于Java 1.5+,但我相信您现在已经在使用Java 5了。

例如:

int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 } };
System.out.println(Arrays.deepToString(myArray));

或者,您可以自己迭代,这也允许您以所选择的打印样式进行更多自定义。

例如:

int[][] myArray = { { 1, 2, 3 }, { 4, 5, 6 } };
for(int[] arr : myArray)
    System.out.println(Arrays.toString(arr));

你不需要在myArray后面加括号吗? - user1529540
@omnitic 我不确定你的意思。我打错字了吗? - Michael Goldstein
赞成,但我会颠倒这个答案的两个部分的顺序--首先提到 Arrays.deepToString,因为对于大多数情况来说,它可能更可取。 - yshavit
我更喜欢自己迭代,因为deep一行代码就给了我所有的东西。 - user1529540

0

尝试类似这样的内容:

int number[][] = { {1, 2, 3}, {1}, {2}};
for (int i = 0; i < number.length; i++)
    System.out.println(Arrays.toString(number[i]));

0

尝试使用Commons Lang 3的ArrayUtils toString方法:

   @Test
   public void multiArrayToString(){
      int[] a = {1,2,3};
      int[] b = {4,5,6};
      int[][] c = {a, b};
      String aCommonsLangToString = ArrayUtils.toString(a);
      String bCommonsLangToString = ArrayUtils.toString(b);
      String cCommonsLangToString = ArrayUtils.toString(c);
      System.out.println(aCommonsLangToString);
      System.out.println(bCommonsLangToString);
      System.out.println(cCommonsLangToString);
   }

输出:

{1,2,3}
{4,5,6}
{{1,2,3},{4,5,6}}

我们真的需要为Java已经拥有的一个简单方法添加Commons Lang依赖吗? - Marco Acierno
不错,Arrays.deepToString()方法可以在没有额外依赖的情况下帮助解决问题,正如@pbabcdefp所提出的。使用此方法,输出的最后一行将是[[1, 2, 3], [4, 5, 6]] - antonycc

0

你可以像这样轻松地遍历数组:

if (yourArray != null) {
    // Where object type means the type of your array.
    for (ObjectType subArray : yourArray) {
        // If this method can't receive nulls, then validate that subArray isn't null
        System.out.println(Arrays.toString(subArray));
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接