0303「4つの整数値から最小値を抽出しよう」
例題
たかしくんは友達とテストの点数で勝負している。
自分を含めて4人のなかで最低点が何点だったか知りたいが、かわいそうなので誰が最低点だったかはわからないようにしたい。
4つの整数値を標準入力に入力したとき、それらのなかで最小の整数値を出力するプログラムを作成しなさい。
実行例
標準入力
91 82 73 64
標準出力
64
サンプルコード
import java.util.Scanner; public class Ex_03_03 { public static void main(String[] args) { final int NUMBER = 4; // 入力する個数 // 入力 Scanner scan = new Scanner(System.in); int min = scan.nextInt(); // 1つめの入力 // 入力, 判定 for(int i=1; i<NUMBER; i++) { // ※すでに1つめの入力をしてあるので i=1 から始めます int temp = scan.nextInt(); // 2~4つめの入力 if(min > temp) min = temp; } // 出力 System.out.println(min); } }
解説
アルゴリズム
int min = scan.nextInt();
min を宣言するとき、1つめに入力した値で初期化しています。
ここで初期化を行わないと、あとで比較をするときにエラーが発生してしまいます。
if(min > temp) min = temp;
- min
- 暫定の最小値が入っています。
- temp
- min と比較したい値が入っています。
- if(min > temp)
- min が temp より大きいか判定します。
- true: temp が新しい暫定の最小値となるので、min = temp でmin を更新します。
- false: min は暫定の最小値のままなので、なにもしません。
応用
最大値を出力するプログラムに書き換えてみましょう。
どこかの判定式にある比較演算子を反転させるだけで作れそうですね?