複雑な条件分岐

3つ以上に分ける

else if を使って、3つ以上の条件分岐が可能です。

たとえば

もっともよくある例は

if ( x > 0 ) {
    y = 100;
}
else if ( x == 0 ) {
    y = 200;
}
else {
    y = 300;
}

これは、x が0よりも少しでも大きいとき、y に 100 を代入。 x が0のとき、y に 200 を代入、そうでないとき(0より小さいとき)は y に 300 を代入するというものです。

== は間違いではありません。代入は = ,比較は == と区別しているのです。

代入

x = 0

比較

x == 0

図示

図で示すと次のようなイメージです。

if ( x > 0 ){
   x > 0 のときの処理;
}
else if ( x == 0 ){
   x が 0 のときの処理;
   ( x > 0 でなく,なおかつ x が 0 )
}
else {
   その他のときの処理;
   ( x > 0 でなく,なおかつ x が 0 でない )
}

else if の入った条件分岐の一般的な形

if (条件1) {条件1が成立するときに実行するブロック}
else if (条件2) {条件2が成立するときに実行するブロック}
else if (条件3) {条件3が成立するときに実行するブロック}
  ・・・必要なだけ繰り返す・・・
else {どの条件も成立しなかったときに実行するブロック}

最後のelse {   } はない場合もあります。

課題1

乱数を求め、それが 0.6 より大きい(今回は0.6を含む)ときには、「運勢上向き」、0.6未満~0.4以上のときは「運勢横ばい」、それより小さいときには「運勢下向き」と出るプログラムを作りなさい。

含む、含まないとうるさく書いているのは、> と、>= などを区別して正しく使ってもらう練習をしてほしいからです。

ファイル名 Joken2.java

/** Math.random() と if を使って運勢を占う(横ばいあり) */
public class Joken2 { 
       public static void main( String[] args ) {
               double un;
               un = Math.random();   //un に double (0~1)の値が入る。
               System.out.println( "unの値" + un );
               if ( un >= 0.6 ){
                   System.out.println( "運勢上向き" );
               }
               else if ( un >= 0.4 ){
                   System.out.println( "運勢横ばい" );
               }
               else{
                   System.out.println( "運勢下向き" );
               }
       } 
}

0.4以上で0.6未満は、次のように表現できますが、こんな面倒なことをしないで、上記のようにしましょう。

( un >= 0.4 & un < 0.6 )

else if の所に来た時点で0.6未満のものしかありませんから、0.4以上かどうかだけ調べればいいのです。

課題2

乱数を求め、次の分類に従ってメッセージを出すプログラムを作りなさい。

 0.1 未満のとき、「最悪」、
 0.1以上~0.4未満のときは「運勢下向き」、
 0.4以上~0.6未満のときは「まあまあ」
 0.6以上~0.9未満のときは「運勢上向き」
 0.9以上のときには「絶好調!!」

前問では大きい方から判断しましたが、今回は小さい方から判断しましょう。

ファイル名 Joken3.java

/** Math.random() と if を使って運勢を占う(絶好調あり) */
public class Joken3 { 
       public static void main( String[] args ) {
               double un;
               un = Math.random();
               if ( un < 0.1 ){
                   System.out.println( "最悪" );
               }
               else if ( un < 0.4 ){
                   System.out.println( "運勢下向き" );
               }
               else if (             ){
                   System.out.println( "まあまあ" );
               }
               else if (             ){
                   System.out.println( "運勢上向き" );
               }
               else{
                   System.out.println( "絶好調!!" );
               }
       } 
}

Javaプログラミング
聖愛中学高等学校
http://www.seiai.ed.jp/
Feb.2009