if – else if – else文

6.4 if – else if – else文

 前項では「もし○○○ならば、×××する。そうでなければ△△△する」という条件分岐を解説しましたが、「そうでなければ△△△する」の部分にさらに条件が追加され、「もし○○○ならば×××する。そうでなくもし□□□ならば◇◇◇する。どちらでもなければ△△△する」というような、さらに複数の条件がある場合は、if – else if – else文を使います。

6.4.1 if else-if -else文の基本構文

 if-else if(エルスイフ)-else文の基本構文は下記のようになります。

 書式:if-else if-else基本構文

図 6.4.1は、if-else if-else文をフローチャートにしたものです。

図 6.4.1 f-else if-else基本構文の処理フロー

◉ポイント

・ 3つ以上の条件に応じた処理を行う場合はif-else if-else文を使う。

6.4.2 複数条件式で数値の大小を比較するプログラム

 キーボードからの入力値に応じて、if-else if-else文の各ブロック内の処理を確認します。

① ソース・フォルダー      :myproj_super_intro/src
② パッケージ          :jp.co.f1.superintro.ch06
③ 名前             :IfElseIfStatement
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ IfElseIfStatement.java

package jp.co.f1.superintro.ch06;
import java.util.Scanner;
public class IfElseIfStatement {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int num1 = 5;

 		System.out.print("数値を入力 > ");
 		int num2 = sc.nextInt();
 
 		if(num2 > num1){
 			System.out.println(num1+"より"+num2+"の方が大きいです。");
 		}else if(num2 < num1){
 			System.out.println(num1+"より"+num2+"の方が小さいです。");
 		}else{
 			System.out.println("num1とnum2の数値は同じです。");
 		}
 	}
 }
        

実行結果

解説

  6行目では、キーボード入力を行う準備を行っています。

   6: Scanner sc = new Scanner(System.in);

 8行目で、if – else if -else文で利用するint型の変数num1を宣言し、値5を初期化(代入)しています。

   8: int num1 = 5;

 10、11行目で画面に文字列を表示し、キーボードから数値入力を促しています。(入力値は変数num2に代入)

   10: System.out.print("数値を入力 > ");
   11 int num2 = sc.nextInt();

 13~19行目はif-else if-else文の範囲になります。まず13行目のif文で変数num1の値5よりも入力されたnum2の方が大きいかどうかを判断し、num2の方が大きければ14行目の処理が実行されます。13行目の条件を満たさない場合次の15行目のelse if文の判定を行い、今度は逆にnum1よりもnum2の値が小さいかどうかを判断し、num2の方が小さければ16行目の処理が実行されます。最後にelseブロックは、13、15行目の条件を両方満たさない場合に実行されます。入力された「5」はこのケース該当するので、18行目の処理が実行されます。

   13: if(num2 > num1){
   14:   System.out.println(num1+"より"+num2+"の方が大きいです。");
   15: }else if(num2 < num1){
   16:   System.out.println(num1+"より"+num2+"の方が小さいです。");
   17: }else{
   18:   System.out.println("num1とnum2の数値は同じです。");
   19: }

 このサンプルプログラムのフローチャートを図 6.4.2に示します。

NEXT>> 6.5 ネストしたif文