問題1-14
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、int型の3つの引数の中で、一番小さいものの値を戻り値として返すminメソッドを作成してください。
【実行結果】
整数88、79、96の中で最小の値は79です
【MethodBasicPractice3.java】
public class MethodBasicPractice3 { public static void main(String[] args) { int x = 88; int y = 79; int z = 96; // minメソッドの呼び出し System.out.println("整数" + x + "、" + y + "、" + z + "の中で最小の値は"); System.out.println(min(x, y, z) + "です"); } // ここにminメソッドを定義してください }
解答例
【MethodBasicPractice3.java】
public class MethodBasicPractice3 { public static void main(String[] args) { int x = 88; int y = 79; int z = 96; // minメソッドの呼び出し System.out.println("整数" + x + "、" + y + "、" + z + "の中で最小の値は"); System.out.println(min(x, y, z) + "です"); } // ここにminメソッドを定義してください // minメソッドの定義 その1 public static int min(int x, int y, int z) { // 最小値変数の宣言と初期化(xを最小値と仮定) int minValue = x; // yの方が小さい場合、最小値変数の値を更新 if(minValue > y) { minValue = y; } // zの方が小さい場合、最小値変数の値を更新 if(minValue > z) { minValue = z; } return minValue; } // minメソッドの定義 その2 public static int min2(int x, int y, int z) { // xの値がyやzの値より小さい場合 if(x < y && x < z) { return x; } // yの値がzの値より小さい場合 else if(y < z) { return y; } // それ以外(zの値が一番小さい) else { return z; } } }
解説
今回のメソッド定義の問題で、解答例には2つのパターンを紹介しています。
「その1」では、非常にシンプルなアルゴリズムを採用しました。
考え方としては、
最小値を保持するための変数を宣言し、第一引数を最小値と仮定して代入する
最小値保持変数と第二引数を比較し、第二引数の方が小さければその値で最小値保持変数を更新する
最小値保持変数と第三引数を比較し、第三引数の方が小さければその値で最小値保持変数を更新する
戻り値に最小値保持変数を指定する
となります。
こうすれば、if文の条件式がゴチャゴチャしなくて済みます。
「その2」では、return文が散らかっている印象を与えるため、あまり良い書き方とは言えません。
戻り値用のローカル変数を宣言して、メソッドの最後に1回だけreturn文を記述するのがメソッドのスマートな書き方でしょう。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】