先頭に戻る

6.メソッド

6-1 「メソッドとは?」

はじめに

本章では、メッソッドについての解説をしていきます。プログラムというのは、様々な「部品」 の組み合わせで作られており、部品の中で最も小さな単位となるのがメソッドです。 言葉だけでは難しいので、例文などを見ながらが学習していきましょう。


メソッドとは

はじめにでも軽く説明しましたが、プログラムとは「部品」を組み合わせて作られているもので、 その最小の単位がメソッドになります。プログラムの内容で繰り返し行われる処理を一つのグループとして まとめることができます。

早速ですが、下のプログラムを見てみましょう。

MaxHwa.java


// 3人の身長・体重・年齢の最大値を求めて表示 import java.util.Scanner; class MaxHwa { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int[] height = new int[3]; // 身長 int[] weight = new int[3]; // 体重 int[] age = new int[3]; // 年齢 for (int i = 0; i < 3; i++) { // 読込み System.out.print("[" + (i + 1) + "] "); System.out.print(" 身長 :"); height[i] = stdIn.nextInt(); System.out.print(" 体重 :"); weight[i] = stdIn.nextInt(); System.out.print(" 年齢 :"); age[i] = stdIn.nextInt(); } // 身長の最大値を求める

int maxHeight = height[0]; if (height[1] > maxHeight) maxHeight = height[1]; if (height[2] > maxHeight) maxHeight = height[2];

// 体重の最大値を求める

int maxWeight = weight[0]; if (weight[1] > maxWeight) maxWeight = weight[1]; if (weight[2] > maxWeight) maxWeight = weight[2];

// 年齢の最大値を求める

int maxAge = age[0]; if (age[1] > maxAge) maxAge = age[1]; if (age[2] > maxAge) maxAge = age[2];

System.out.println("身長の最大値は" + maxHeight + "です。"); System.out.println("体重の最大値は" + maxWeight + "です。"); System.out.println("年齢の最大値は" + maxAge + "です。"); } }
実行結果

[1]身長:172
体重:64
年齢:31 [2]身長:168
体重:57
年齢:24 [3]身長:181
体重:62
年齢:18 身長の最大値は181です。 体重の最大値は64です。 年齢の最大値は31です。

オレンジは入力した値

解説

これは今まで通りに書いたプログラムで、3人の身長・体重・年齢の最大値を入力し、 表示するというものです。ここで重要な点は、プログラム内で、ピンク色で囲われている部分です。 身長の最大値を求める場合は「height」、体重の最大値を求める場合は「weight」、 年齢の最大値を求める場合は「age」という配列が用意され、それぞれに値が代入されていきます。 しかしよく見てみると、配列の名前は違いますが、最大値を求めるという作業は同じであり、3つ全てにおいて、 値をそれぞれ比べて、1番多きな値を配列に代入し表示するという同じ内容のプログラムが書かれています。 そのため同じプログラムを3回も書いており、プログラム自体も長くなってしまっています。 しかし、メソッドを用いれば、このように、同じ処理を行うものをまとめることができるようになります。

それでは、このプログラムをメソッドを用いたものに改良してみます。


MaxHwaMethod.java


// 3人の身長・体重・年齢の最大値を求めて表示(メソッド版) import java.util.Scanner; class MaxHwaMethod { //--- a, b, cの最大値を返却 ---//

static int max(int a, int b, int c) { int max = a; if (b > max) max = b; if (c > max) max = c; return max; }

public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); int[] height = new int[3]; // 身長 int[] weight = new int[3]; // 体重 int[] age = new int[3]; // 年齢 for (int i = 0; i < 3; i++) { // 読込み System.out.print("[" + (i + 1) + "] "); System.out.print(" 身長:"); height[i] = stdIn.nextInt(); System.out.print(" 体重 :"); weight[i] = stdIn.nextInt(); System.out.print(" 年齢 :"); age[i] = stdIn.nextInt(); } int maxHeight = max(height[0], height[1], height[2]); // 身長の最大値 int maxWeight = max(weight[0], weight[1], weight[2]); // 体重の最大値 int maxAge = max(age[0], age[1], age[2]); // 年齢の最大値 System.out.println("身長の最大値は" + maxHeight + "です。"); System.out.println("体重の最大値は" + maxWeight + "です。"); System.out.println("年齢の最大値は" + maxAge + "です。"); } }
実行結果

[1]身長:172
体重:64
年齢:31 [2]身長:168
体重:57
年齢:24 [3]身長:181
体重:62
年齢:18 身長の最大値は181です。 体重の最大値は64です。 年齢の最大値は31です。

オレンジは入力した値

解説

変更された点は、先程と同じくピンク色で囲われている部分です。 先程も説明しましたが、メソッドは同じ処理をするものを「部品」としてまとめることができます。 本プログラムで改良された点は、3つのint型の値を渡したら、その最大値を求めて返す という部品が作られたことです。このことにより、この部品一つで最大値を求める処理を身長・体重・年齢それぞれに行うことができるようになりました。 もし、身長・体重・年齢以外に何かの最大値を求める処理を増やしたい時には最大値を求める処理をまた書くのではなく、メソッドに値を送り、返却してもらうだけで 最大値を求める処理を書くことなく値を求めることができます。

ここからは、具体的にメソッドの宣言方法や使用方法を学習していきましょう。


メソッドの宣言

メソッドを利用するには、まずメソッドを作る必要があります。メソッドを作ることを、メソッドの宣言と呼びます。 今回は、先ほどのプログラム(MaxHwaMethod.java)を基にメソッドの宣言方法を解説していきます。

メソッド用に改良したプログラム(MaxHwaMethod.java)でピンク色で囲まれている部分がメソッドの宣言部分です。 その部分だけを以下に示します。

 

青色で囲まれている部分をメソッド頭部といい、メソッド頭部には、 ①返却型②メソッド名③仮引数並びというものがあります。

メソッド頭部
メソッド頭部は、メソッドの名前と仕様を記した部分です。

返却値
自分を呼び出した部品=メソッドに戻す値である返却値の型です。本メソッドの場合、 返却するのは最大値なので、その型であるintとなります。

メソッド名
メソッドの名前です。メソッドは名前を基に他の部品から呼び出されます。

仮引数並び
メソッドは、補助的な支持を受け取れるようになっています。支持を受け入れるための変数である 仮引数を( )の中で宣言します。本メソッドのように複数の仮引数を受け入れる場合は、コンマで区切ります。

水色で囲まれている部分をメソッド本体といいます。

メソッド本体
メソッド本体は{ }で囲まれたブロックです。メソッドmaxの本体では、maxという変数宣言がされています。このように、メソッドの中でのみ利用する変数は、 そのメソッドの中で宣言・利用するのが原則です。