我有一个二维数组
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
或其他东西。
答案 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]