●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 { その他のときの処理; }
if (条件1) {条件1が成立するときに実行するブロック} else if (条件2) {条件2が成立するときに実行するブロック} else if (条件3) {条件3が成立するときに実行するブロック} ・・・必要なだけ繰り返す・・・ else {どの条件も成立しなかったときに実行するブロック}
最後のelse { } はない場合もあります。
●乱数を求め、それが 0.6 より大きい(今回は0.6を含む)ときには、「運勢上向き」、0.6未満〜0.4以上のときは「運勢横ばい」、それより小さいときには「運勢下向き」と出るプログラムを作りなさい。
含む、含まないとうるさく書いているのは、> と、>= などを区別して正しく使ってもらう練習をしてほしいからです。
/** 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以上かどうかだけ調べればいいのです。
●乱数を求め、次の分類に従ってメッセージを出すプログラムを作りなさい。
0.1 未満のとき、「最悪」、 0.1以上〜0.4未満のときは「運勢下向き」、 0.4以上〜0.6未満のときは「まあまあ」 0.6以上〜0.9未満のときは「運勢上向き」 0.9以上のときには「絶好調!!」
前問では大きい方から判断しましたが、今回は小さい方から判断しましょう。
/** 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( "絶好調!!" ); } } }