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

null値を出力したくない場合は、if条件でチェックしてください。nullの場合は、続行します。

continueステートメントを使用できます。

于 2012-04-04T12:50:28.007 に答える
0

@doNotCheckMyBlogが述べたようなアプローチは良いですが、タイトルだけで尋ねられたものからです。グーグルはこのタイトルでn次元配列も識別しているので、それを必要とするすべての人のためにn次元配列を印刷するための解決策をここに投稿します:

このメソッドは、2つの関数から構成されています。1つは配列を出力し、もう1つはプリミティブと通常のオブジェクトから配列オブジェクトを作成します。(実行する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]

また、1次元配列の表示にも優れています。

out: [FR, EN, DE, CA]
于 2016-04-02T00:57:18.600 に答える