ゆるゆるプログラミング

・配列を返すメソッド

ここでは、メソッドの中で配列を生成する方法と、すでに生成している配列をメソッドに渡すして、その値を変更する2つの方法をJavaのソースコードで説明します。

以下が、そのサンプルコードと実行結果です。

ReturnSample1.java
001:    public class ReturnSample1 {
002:    	// 1~numberの値を格納した配列を返す
003:    	// 配列はメソッド内で生成
004:    	static double[] func1( int number )
005:    	{
006:    		// numberが0以下の場合、nullを返す
007:    		if ( 0 > number ) return null;
008:    
009:    		// number個の配列を作成
010:    		double[] v = new double[ number ];
011:    
012:    		// 配列に1からの連番を格納
013:    		for ( int i = 0; i < v.length; ++ i )
014:    			v[ i ] = (double)( i + 1 );
015:    
016:    		// 配列を返す
017:    		return v;
018:    	}
019:    
020:    
021:    	// 配列を引数として渡し、1~numberの値を格納する
022:    	static boolean func2( double[] v )
023:    	{
024:    		// vがnullの場合、falseを返す
025:    		if ( null == v ) return false;
026:    
027:    		// 配列に1からの連番を格納
028:    		for ( int i = 0; i < v.length; ++ i )
029:    			v[ i ] = (double)( i + 1 );
030:    
031:    		// trueを返す
032:    		return true;
033:    	}
034:    
035:    
036:    	public static void main( String[] args ) {
037:    		int i;
038:    
039:    		// 配列をメソッド内で生成するfunc1を呼び出す
040:    		System.out.println( "■実行結果1" );
041:    		double[] v1 = func1( 10 );
042:    		if ( null != v1 ) {
043:    			for ( i = 0; i < v1.length; ++ i ) {
044:    				System.out.println( v1[ i ] );
045:    			}
046:    		}
047:    		System.out.println();
048:    
049:    		// 生成された配列を渡すメソッドfunc2を呼び出す
050:    		System.out.println( "■実行結果2" );
051:    		double[] v2 = new double[ 10 ];
052:    		if ( true == func2( v2 ) ) {
053:    			for ( i = 0; i < v2.length; ++ i ) {
054:    				System.out.println( v2[ i ] );
055:    			}
056:    		}
057:    	}
058:    }

ReturnSample1を実行

C:\talavax\javasample>java ReturnSample1

実行結果

■実行結果1
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0

■実行結果2
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0

2つの方法で同じ結果が得られていることが分かります。

ここからは、このソースコードを上から順番に解説していきます。

001:    public class ReturnSample1 {

クラス名を、ReturnSample1としています。

002:    	// 1~numberの値を格納した配列を返す
003:    	// 配列はメソッド内で生成
004:    	static double[] func1( int number )

配列の個数numberを引数として渡し、生成したdouble型配列に1.0からnumberを格納するメソッドです。

006:    		// numberが0以下の場合、nullを返す
007:    		if ( 0 > number ) return null;

個数numberが0未満のとき、戻り値をnullで返し、このメソッドを抜けます。

009:    		// number個の配列を作成
010:    		double[] v = new double[ number ];

個数numberのdouble型配列を生成します。

012:    		// 配列に1からの連番を格納
013:    		for ( int i = 0; i < v.length; ++ i )
014:    			v[ i ] = (double)( i + 1 );

double型配列に1.0からの連番を格納しています。このとき、iはint型なのでdouble型型キャストしています。

016:    		// 配列を返す
017:    		return v;

生成したdouble型配列vを返します。

021:    	// 配列を引数として渡し、1~numberの値を格納する
022:    	static boolean func2( double[] v )

既に生成済のdouble型配列を引数として渡し、その配列の中を1.0からnumberに変更するメソッドです。

024:    		// vがnullの場合、falseを返す
025:    		if ( null == v ) return false;

配列vがnullのとき、戻り値としてfalseを返し、このメソッドを抜けます。

027:    		// 配列に1からの連番を格納
028:    		for ( int i = 0; i < v.length; ++ i )
029:    			v[ i ] = (double)( i + 1 );

double型配列に1.0からの連番を格納しています。このとき、iはint型なのでdouble型型キャストしています。

031:    		// trueを返す
032:    		return true;

trueを返します。

036:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

039:    		// 配列をメソッド内で生成するfunc1を呼び出す
040:    		System.out.println( "■実行結果1" );
041:    		double[] v1 = func1( 10 );
042:    		if ( null != v1 ) {
043:    			for ( i = 0; i < v1.length; ++ i ) {
044:    				System.out.println( v1[ i ] );
045:    			}
046:    		}
047:    		System.out.println();

メソッド内で配列を生成するfunc1に10を引数と渡した結果を表示しています。

050:    		System.out.println( "■実行結果2" );
051:    		double[] v2 = new double[ 10 ];
052:    		if ( true == func2( v2 ) ) {
053:    			for ( i = 0; i < v2.length; ++ i ) {
054:    				System.out.println( v2[ i ] );
055:    			}
056:    		}

あらかじめ生成している配列を渡して値を変更するメソッドfunc2を呼び出して、結果を表示しています。

■関連コンテンツ

配列 同じ型の変数をまとめた配列について解説

■新着情報

2017.11.17 N値化 カラー画像をN値化する方法について解説
2017.11.16 最も近い値の取得 指定値に最も近い配列の値を取得する方法を解説
2017.10.02 アルファ値(透過) アルファ値(透過)について

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ