複雑な判断
自動車免許書は、免許取得から5年以上かつ5年間無事故無違反の場合にゴールド免許書になります。これをプログラムで判断すると次の通りになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package step05; import java.util.Scanner; public class Handan5 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); System.out.println("免許取得から何年ですか?"); int keika = scan.nextInt();; System.out.println("何年無事故無違反ですか?"); int mujiko = scan.nextInt(); if( keika >= 5 ){ if(mujiko >= 5){ System.out.println("ゴールド免許です"); }else{ System.out.println("あと"+(5-mujiko)+"年無事故無違反で、ゴールド免許です。"); } } } } |
なにやら複雑ですね。このプログラムをみていきます。
ネスト
16行目の「if」命令のかっこ{の中に、さらに17行目に「if」命令があります。
16 17 18 19 20 21 22 |
if( keika >= 5 ){ if(mujiko >= 5){ System.out.println("ゴールド免許です"); }else{ System.out.println("あと"+(mujiko-1)+"年無事故無違反で、ゴールド免許です。"); } } |
このように「if」命令の中に、さらに「if」命令を記述することを「ネスト」と言います。
ネストの動作は、16行目で「免許取得から5年以上」か判断し、さらに17行目で「無事故無違反が5年以上」か判断します。つまり、「免許取得から5年以上かつ無事故無違反が5年以上」の2つの条件をネストを使うと記述できるのです。
今回は2つの条件を記述しましたが、条件を増やしたい場合は16行目の「if」の中(17行目)に、さらに「if」文を記述していくことで実現します。判断したい条件の数に合わせてネストを利用してみてください。
if命令で複雑な判断ができるようになりました。プログラムを自由に改造しながら体感してください。また、次の「チャレンジ」にも挑戦してみてください。