打印多维数组的内容

时间:2012-04-04 12:47:41

标签: java arrays multidimensional-array foreach

我有一个二维数组

 public class TwoDimensions {

public static void main(String[] args){
    String[][] names = new String[3][3]; 
        names[0][0] = "Joe";
        names[1][1] = "Jane";
        names[2][2] = "Herkimer";
    for(String[] output:names){
        System.out.println(names);
    }
    }
}

如何打印所有内容。位置[0][1]我什么都没有。所以它应该打印null或其他东西。

4 个答案:

答案 0 :(得分:2)

这似乎是家庭作业问题,所以我会给你一个提示......尝试阅读有关嵌套for循环的内容。

祝你好运!

答案 1 :(得分:2)

如果您想将其打印为网格,可以使用

for (String[] row : names)
    System.out.println(Arrays.toString(row));

打印

[Joe, null, null]
[null, Jane, null]
[null, null, Herkimer]

答案 2 :(得分:0)

如果您不想打印空值,请使用if条件进行检查。如果为null,则继续。

您可以使用continue语句。

答案 3 :(得分:0)

@doNotCheckMyBlog提到的方法很好,但仅从标题中提到的方法。 Google在这个标题中也标识了n维数组,因此我将在这里发布一个解决方案,为每个需要它的人打印n维数组:

此方法由两个函数构成。一个打印数组,另一个从基元和普通对象创建一个数组对象。 (java.lang.ClassCastException的解决方法(Object[])(new int[]{1,2,3})

public static String printNdimArray(Object[] in) {
    String ret = "[";
    for(Object obj : in ) {
        if( obj.getClass().isArray() )
            ret += printNdimArray( createArrayFromArrayObject(obj) );
        else
            ret += obj.toString();
        ret += ", ";
    }
    ret = ret.substring(0, ret.length() - 2);
    return ret +"]";
}

其他函数将对象或基本数组转换为普通对象数组,可用于再次调用上述函数,直到原始数组树的叶子。 (原始代码来自:https://stackoverflow.com/a/6427453

public static Object[] createArrayFromArrayObject(Object o) {
    if(!o.getClass().getComponentType().isPrimitive())
        return (Object[])o;

    int element_count = Array.getLength(o);
    Object elements[] = new Object[element_count];

    for(int i = 0; i < element_count; i++)
        elements[i] = Array.get(o, i);          
    return elements;
}

在非常大的阵列中,结构显然不再清晰,但可以通过一些调整来解决。对于数组中的少量对象,它看起来像:

out: [Mad Max: Fury Road, 7200, [600, 3600, 4000], [EN], [DE, EN, FR], sci_fi]

显示一维数组也很棒:

out: [FR, EN, DE, CA]