同じ処理が複数個所に・・・
変数、配列、2次元配列に格納されている税抜価格を税込にするプログラムを作ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package step09; public class Test { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ //税抜価格 int price1 = 800; int[] price2 = {200,600,400}; int price3[][] = { {240,600}, {440,800}, }; // 消費税計算 int ans = (int) (price1 * 1.1); System.out.println(ans); for(var i = 0;i < price2.length;i = i + 1 ){ ans = (int) (price2[i] * 1.1); System.out.println(ans); } for(var i = 0;i < price3.length;i = i + 1){ for(var j = 0;j < price3[0].length;j = j + 1){ ans = (int) (price3[i][j] * 1.1); System.out.println(ans); } } } } |
このプログラム、消費税率や計算方法などが変更になったら消費税計算を行っている17、21、27行目を修正する必要があります。まだ3か所なら対応できそうですが、もっと多ければ間違える恐れがあります。これを解消するテクニックが「メソッド(関数)」です。
メソッド
メソッド(関数)は関数電卓のキーのように特定の機能を定義/実行できるものです。上記の消費税計算を関数にしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package step09; public class Test { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ //税抜価格 int price1 = 800; int[] price2 = {200,600,400}; int price3[][] = { {240,600}, {440,800}, }; System.out.println(tax(price1)); for(var i = 0;i < price2.length;i = i + 1 ){ System.out.println(tax(price2[i])); } for(var i = 0;i < price3.length;i = i + 1){ for(var j = 0;j < price3[0].length;j = j + 1){ System.out.println(tax(price3[i][j])); } } } // 消費税計算 public static int tax(int price) { int ans = (int) (price * 1.1); return ans; } } |
消費税計算を関数として定義しているのが29行目~32行目です。
29 30 31 32 |
public static int tax(int price) { int ans = (int) (price * 1.1); return ans; } |
メソッドを定義する宣言が29行目です。「public static」は別途詳細を紹介しますので、現段階では無条件に付けてください。
次の「int」はこのメソッドの型の定義です。この型の値を呼び出し元に戻さなければいけません。
「tax」がメソッド名となり、変数と同様に適当な名前をつけることができます。
そしてかっこ()内に引数を受け取る変数(int price)を定義します。引数はメソッドを呼び出す(使う)側から引き渡される値です。
メソッドの命令は29行目の「{」から32行目の「}」の間に記述します。
31行目の「return」がメソッドを呼び出している(使う)元へ戻る命令です。右側の値が呼び出し元へ戻す値(戻り値)になります。
利用側
メソッドを呼び出している(利用している)のが16、19、24行目です。
16 |
System.out.println(tax(price1)); |
19 |
System.out.println(tax(price2[i])); |
24 |
System.out.println(tax(price3[i][j])); |
それぞれ「tax」部分でメソッドを呼び出しています。そして、かっこ()にメソッドへ引き渡す値(引数)を記述しています。この値を基にメソッドでは消費税の計算が行われます。メソッドの処理が終了すると値が返ってきます(戻り値)。この値をそれぞれSystem.out.println命令で表示しているのです。
だいぶ複雑な処理ですね。少しづつ理解を深めていきましょう!