複雑な条件判断

3つ以上に分ける

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

たとえば

もっともよくある例は

if ( x > 0 ) {
    z = x;
}
else if ( x == 0 ) {
    z = a;
}
else {
    z = y;
}

これは、x が0よりも少しでも大きいとき、z に x を代入。 x が0のとき、z に a を代入、そうでないとき(0より小さいとき)は z に y を代入するというものです。(ただし、x が浮動小数型の変数であったとき0にぴったり等しくなることはめったにありません。)

代入と比較は区別します。

代入

x = 0

比較

x == 0

図示

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

if ( x > 0 ){
   x > 0 のときの処理;
}
else if ( x == 0 ){
   x が 0 のときの処理;
}
else {
   その他のときの処理;
}

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)の値が入る。
               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( "絶好調!!" );
               }
       } 
}
もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified