2017.08.25
配列を返すメソッド
メソッドの作り方
static double[] func1( int number ) { // numberが0以下の場合、nullを返す if ( 0 > number ) return null; // number個の配列を作成 double[] v = new double[ number ]; : // 配列を返す return v; }
static boolean func2( double[] v ) { // vがnullの場合、falseを返す if ( null == v ) return false; // 配列に1からの連番を格納 for ( int i = 0; i < v.length; ++ i ) v[ i ] = (double)( i + 1 ); // trueを返す return true; }
Javaソースコード
ReturnSample1.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058
public class ReturnSample1 { // 1~numberの値を格納した配列を返す // 配列はメソッド内で生成 static double[] func1( int number ) { // numberが0以下の場合、nullを返す if ( 0 > number ) return null; // number個の配列を作成 double[] v = new double[ number ]; // 配列に1からの連番を格納 for ( int i = 0; i < v.length; ++ i ) v[ i ] = (double)( i + 1 ); // 配列を返す return v; } // 配列を引数として渡し、1~numberの値を格納する static boolean func2( double[] v ) { // vがnullの場合、falseを返す if ( null == v ) return false; // 配列に1からの連番を格納 for ( int i = 0; i < v.length; ++ i ) v[ i ] = (double)( i + 1 ); // trueを返す return true; } public static void main( String[] args ) { int i; // 配列をメソッド内で生成するfunc1を呼び出す System.out.println( "■実行結果1" ); double[] v1 = func1( 10 ); if ( null != v1 ) { for ( i = 0; i < v1.length; ++ i ) { System.out.println( v1[ i ] ); } } System.out.println(); // 生成された配列を渡すメソッドfunc2を呼び出す System.out.println( "■実行結果2" ); double[] v2 = new double[ 10 ]; if ( true == func2( v2 ) ) { for ( i = 0; i < v2.length; ++ i ) { System.out.println( v2[ i ] ); } } } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis ReturnSample1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac ReturnSample1.java
実行
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つの方法で同じ結果が得られていることが分かります。
Javaソースコードの解説
ここからは、このソースコードを上から順番に解説していきます。
001
public class ReturnSample1 {
クラス名を、ReturnSample1としています。
002 003 004
// 1~numberの値を格納した配列を返す // 配列はメソッド内で生成 static double[] func1( int number )
006 007
// numberが0以下の場合、nullを返す
if ( 0 > number ) return null;
009 010
// number個の配列を作成 double[] v = new double[ number ];
012 013 014
// 配列に1からの連番を格納 for ( int i = 0; i < v.length; ++ i ) v[ i ] = (double)( i + 1 );
016 017
// 配列を返す return v;
021 022
// 配列を引数として渡し、1~numberの値を格納する static boolean func2( double[] v )
024 025
// vがnullの場合、falseを返す
if ( null == v ) return false;
027 028 029
// 配列に1からの連番を格納 for ( int i = 0; i < v.length; ++ i ) v[ i ] = (double)( i + 1 );
031 032
// trueを返す return true;
trueを返します。
036
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
039 040 041 042 043 044 045 046 047
// 配列をメソッド内で生成するfunc1を呼び出す System.out.println( "■実行結果1" ); double[] v1 = func1( 10 ); if ( null != v1 ) { for ( i = 0; i < v1.length; ++ i ) { System.out.println( v1[ i ] ); } } System.out.println();
050 051 052 053 054 055 056
System.out.println( "■実行結果2" ); double[] v2 = new double[ 10 ]; if ( true == func2( v2 ) ) { for ( i = 0; i < v2.length; ++ i ) { System.out.println( v2[ i ] ); } }
以上です。