2015年9月18日金曜日

メソッドについて 戻り値を使ってメソッドから値を返す

前回や、その前の回でもすでにメソッドについては取り上げました。今回はメソッドを使って呼び出し元に値を返す方法を見てみたいと思います。「voidとreturn」の記事も参照。

値を返すためにはreturnを使います。まずは実際にコードを見てみます。
class Test{
    public static void main(String args[]){
        System.out.println(method1());
    } 
    private static String method1(){
    return "kaesu yo";
    }
 }
このクラスの赤い部分を見てください。returnを使って、String型のデータを返しているのがわかります。値を返す時には、このようにreturnの右隣に返したいデータを記述します。

ただし、値を返す時にはその前に返すデータの型を宣言しなければいけません。この場合はString型のデータ"kaesu yo"を返すので、緑の部分でStringと宣言しています。

その少し上の青い部分ではこのメソッド「method1」が呼び出されています。値を返す場合にはこのメソッドそのものが戻り値のデータとして扱われます。つまり、このクラスにおいて「method1」はString型のデータを返すので、「method1」はString型のデータとして扱われています。

このコードを実行すると結果は次のようになります。


メソッドから値を返すのに慣れてくると次のような素数判定のプログラムに利用したりできます。
下のプログラムはメソッド「display()’」でint型のデータ(整数)が素数であった場合に「○○は素数です」と表示し、int型のデータ(整数)が素数でなかった場合、「○○は素数ではありません」と表示します。難しいかもしれませんが、参考にしてみてください。

class Test{
    public static void main(String args[]){
    display(44);
    display(5);
    display(46487);
    display(97247);
    }

   private static void display(int Num){
         if( isPrimeNum( Num ) ) {
            System.out.println( Num + "は素数です。" );
         } else{
            System.out.println( Num +"は素数ではありません。");
         }  
      }

   private static boolean isPrimeNum( int x ) {
         if( x == 2 )
         return true;

         if( x < 2 || x % 2 == 0 )
         return false;  

         for( int a = 3; a <= Math.sqrt((double)x); a += 2 )
             if( x % a == 0 )
             return false;
       
   return true;
   }
 }