たとえば、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 を使って同じサイズの配列を用意しています。
なお、配列を扱う場合には色々と考慮すべき点があるので、実際に配列を返すメソッドをつくるときは注意が必要です。
例えば、処理をしてみないと返す配列のサイズが決まらない場合などです。
処理が煩雑になるようなら、配列を返す形を取らず、別の形式で実現する検討も必要ですね。
(今回のクイズはありません)