0

我有一个二维数组

 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

4 回答 4

2

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

祝你好运!

于 2012-04-04T12:49:32.397 回答
2

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

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

印刷

[Joe, null, null]
[null, Jane, null]
[null, null, Herkimer]
于 2012-04-04T12:55:52.577 回答
0

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

您可以使用 continue 语句。

于 2012-04-04T12:50:28.007 回答
0

@doNotCheckMyBlog 提到的方法很好,但仅从标题中询问。谷歌也用这个标题标识了 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]
于 2016-04-02T00:57:18.600 回答