3

私は次の方法を持っています:

public static int arraySum(Object obj) {
}

このメソッドは、obj 内のすべての要素の合計を返す必要があります。このメソッドの前提条件はobj、任意の次元の Integer 配列であることです。つまりIntegerInteger[]Integer[][]などです。

method の本体を記述するためにarraySum()、foreach ループと再帰を使用しています。ただし、foreach ループでは、obj の要素がどの型であるかを知る必要があります。Integerのタイプ (つまり、、Integer[]など)を調べる方法はありobjますか?

編集: これは私の CS コースの課題です。メソッドの書き方を単純に聞きたくないので、そのような具体的な質問をしています。

4

2 に答える 2

7

あなたが思っているよりも簡単だと思います:

public static int arraySum(Object obj) {
    if (obj.getClass() == Integer.class)
        return ((Integer) obj).intValue();

    int sum = 0;
    for (Object o : (Object[]) obj)
        sum += arraySum(o);

    return sum;
}

基本的にInteger、どの次元の配列でもObject[].


Object obj = new Integer[][][]{{{1,2,3}},{{4,5,6},{7,8,9}},{{10}}};

System.out.println(arraySum(obj));
55
于 2013-10-19T21:22:10.407 に答える
0

instanceofたとえば、次のように simple で実行できます。

if (obj instanceof Integer[][]) 
    System.out.println("2d");
if (obj instanceof Integer[]) 
    System.out.println("1d");
if (obj instanceof Integer) 
    System.out.println("0d");
于 2013-10-19T21:23:16.730 に答える