26.1.4.6 条件の複合化

条件判断を行なう場合に,一つの判断基準だけでは済まない場合もあります.たとえば,ある西暦年号yが"昭和"であるかどうかを判定するとしましょう.昭和1年(元年)が1926年,昭和64年が1989年ですから,条件としては

1926以上かつ1989以下

となります.これは,単純な大小比較をかつで組み合わせた形をしています.もちろんifで判定したものに対してifを再度用いることも可能ですが,Javaではこれを

1926 <= y && y <= 1989

と書きます.&&が「かつ」を表わしています.

これを利用して,1900年から2000年までの10年ごとの年号を表示してみましょう.関係するのは明治(1868〜1912),大正(1912〜1926),昭和(1926〜1989),平成(1989〜)の4つの元号ですから,ifによる条件判定が4つ並んだ形となります.

class Gengou {
  public static void main(String argv[ ]) {
    int y;
    for(y=1900; y<=2000; y=y+10) {
       if(1868 <=y && y <=1912)
          System.out.println(y + "年は明治です.");
       if(1912 <=y && y <=1926)
          System.out.println(y + "年は大正です.");
       if(1926 <=y && y <=1989)
          System.out.println(y + "年は昭和です.");
       if(1989 <=y)
          System.out.println(y + "年は平成です.");
    }
  }
}

fileGengou.java (utf-8)

for形式でのyの値のふやし方(y=y+10)に注意して下さい.結果は

1900年は明治です. 1910年は明治です. 1920年は大正です. 1930年は昭和です. 1940年は昭和です. 1950年は昭和です. 1960年は昭和です. 1970年は昭和です. 1980年は昭和です. 1990年は平成です. 2000年は平成です.