Thinkers'Studio
JavaとC言語の自習ツール
配列をメソッドの戻り値とするには

Java では配列をメソッドの戻り値にすることができます

 たとえば、Stringクラスの splitメソッドは String[] を返します。
 ここでは、簡単な機能で配列を返すメソッドの例を示します。 作成するメソッドは次の2つです。

    public static int[] mulArray( int[] a, int n )
    public static int[][] mulArray2( int[][] a, int n )
 いずれも、引数で渡した配列 a の各要素を n 倍した結果を戻り値で返します。

  【 配列をメソッドの戻り値とする例
 mulArray2 は 2次元配列(配列の配列)を扱いますが、下位の配列要素数が異なる場合にも対応します。

class TestReturn {

    // 配列を返すメソッド
    public static int[] mulArray( int[] a, int n ) {
        int[] t = new int[a.length];
        for( int i = 0; i < t.length; i++ )
            t[i] = a[i] * n;
        return t;
    }

    // 2次元配列を返すメソッド
    public static int[][] mulArray2( int[][] a, int n ) {
        int[][] t = new int[a.length][];
        for( int i = 0; i < t.length; i++ ) {
            t[i] = new int[a[i].length]; //下位配列を各要素数で生成
            for( int j = 0; j < t[i].length; j++ )
                t[i][j] = a[i][j] * n;
        }
        return t;
    }

    // 配列表示用メソッド
    public static void printArray( int[] a ){
        for( int i = 0; i < a.length ; i++ )
            System.out.print( a[i] + " " );
        System.out.println();
    }
    public static void printArray2( int[][] a ){
        for( int i = 0; i < a.length ; i++ ) {
            System.out.print( "[" + i + "]" );
            for( int j = 0; j < a[i].length; j++ )
                System.out.print( " " + a[i][j] );
            System.out.println();
        }
    }

    // main ------------------------------------------------
    public static void main( String[] args ) {
        int[] a    = { 1, 2, 3, 4, 5 };
        int[][] aa = { { 10, 11, 12 }
                     , { 20, 21, 22, 23 }
                     , { 30, 31, 32, 33, 34 } };
        //メソッドの呼び出し
        int[] b    = mulArray( a, 2 );     printArray( b );
        int[][] bb = mulArray2( aa, 100 ); printArray2( bb );
    }
}
(実行結果)
2 4 6 8 10 
[0] 1000 1100 1200
[1] 2000 2100 2200 2300
[2] 3000 3100 3200 3300 3400

 上の例では、渡した引数の配列を書き換えずに、結果を戻り値として返します。
 返す配列のサイズが引数で渡した配列 a と同じなので、a.length やその下位配列の a[i].length を使って同じサイズの配列を用意しています。

 なお、配列を扱う場合には色々と考慮すべき点があるので、実際に配列を返すメソッドをつくるときは注意が必要です。
 例えば、処理をしてみないと返す配列のサイズが決まらない場合などです。 処理が煩雑になるようなら、配列を返す形を取らず、別の形式で実現する検討も必要ですね。

(今回のクイズはありません)

前回のクイズの答え: (前回の問題を見る
  '\u0020'(半角スペース)以下の文字しかないので、空の文字列が返されます。