Javaに関する様々な情報をご紹介します。

2if、switch

Javaに関する様々な情報をご紹介します。

if、switch

Javaでのif文、switch文について説明します。

if文

if文は以下の枠内のフォーマットで構成されています。elseは省略可能です。式にはブール型(true、false)を返す式を記載し、式の結果がtrueの場合はifブロック内の文を実行します。式の結果がfalseの場合はelseブロック内の文を実行します。

if (式) {
  文(複数可)
} else {
  文(複数可)
}

if文は以下の枠内のフォーマットのようにelse ifを使用し、複数の式を実行し条件にあった文のみを実行させることができます。else ifはいくつでも記載することができます。elseは省略可能です。まずifの式を実行し、falseであれば次のelse ifの式を実行します。式の結果がtrueであればそのelse ifブロック内の文を実行します。式の結果がfalseであれば、次のelse ifの式を実行します。すべてのelse ifの式がfalseであれば、elseブロック内の文を実行します。

if、else ifなど各ブロックのいずれかの文が実行されるとif文全体の処理は終了します。他のブロックの処理を実行することはありません。

if (式) {
  文(複数可)
} else if (式) {
  文(複数可)
} else if (式) {
  文(複数可)
} else {
  文(複数可)
}

【例1】if文を使用した例です。

public class ExControl4 {
    public static void main(String[] args) {
        int score = 70;   //(1)
        char grade;

        if (score >= 90) {   //(2)
            grade='A';
        } else if (score >= 70) {   //(3)
            grade='B';
        } else if (score >= 50) {
            grade='C';
        } else {
            grade='D';
        }

        System.out.println("あなたは" + grade + "判定です。");  //(4)
    }
}

解説1

  1. (1)変数scoreに値70を代入します。
  2. (2)ifの式で(score >= 90)を判定し、falseのため次のelse ifへ処理を移します。
  3. (3)else ifの式で(score >= 70)を判定し、trueのためgrade = 'B'の文を実行後、if文処理を終了します。
  4. (4)printlnメソッドで変数gradeの値を表示します。

実行結果1

D:\JAVA>javac ExControl4.java

D:\JAVA>java ExControl4
あなたはB判定です。

D:\JAVA>

?:の説明

if-else構文を簡略化させた方法として、?:演算子を使う方法があります。?:は以下のフォーマットで構成されています。式にはブール型を返す式を記載し、trueの場合は文1をfalseの場合は文2を実行します。文1が返すデータ型と文2が返すデータ型には互換性がなければなりません。

式  文1  文2;

【例2】?:演算子を使用した例です。

public class ExControl5 {
    public static void main(String[] args) {
        int score = 80;   //(1)
        System.out.println("あなたは" +
        (score >= 80 ? "合格" : "不合格") + "です。");   //(2)
    }
}

解説2

  1. (1)変数scoreに値80を代入します。
  2. (2)printlnメソッド内で?:演算子を使用します。score >= 80はtrueのため"合格"を返します。

実行結果2

D:\JAVA>javac ExControl5.java

D:\JAVA>java ExControl5
あなたは合格です。

D:\JAVA>

switch文

switch文は以下の枠内のフォーマットで構成されています。if文との違いはif文が○○以上、○○と同等などブール型の値を判断基準とするのに対し、switch文は整数型の値しか判断基準とできない点です。(式)にはbyte、short、char、int型の値を返す式を記載します。caseコマンドの値には定数もしくは定数を返す式を記載します。値が一定でない変数を記載することはできません。

switch文の動作としてはまずswitchに書かれている(式)を判別し合致するcase値の文を実行します。もしすべてのcase値に合致しない場合は defaultに記載されている文の実行を行います。breakはcase文の後に置き、そのcase文の実行後、switch文全体の処理から抜け出すために使用します。

default、breakは省略可能です。breakがない場合、case文を実行した後でもswitch文全体の処理から抜け出ず、次のcase値の判定を行います。意図的に複数のcase文を実行させる場合を除き、各case文の後にbreakを記載します。

switch (式) {
  case 値: 文(複数可); break
  case 値: 文(複数可); break
  case 値: 文(複数可); break
  default: 文(複数可); break
}

【例3】do while文を使用した例です。

public class ExControl6 {
    public static void main(String[] args) {
        int lot = 10;   //(1)
        switch (lot) {   //(2)
            //(3)該当するcase値の文を実行
            case 1: System.out.println("車が当選!"); break;
            case 2: System.out.println("旅行が当選!"); break;
            case 3: System.out.println("冷蔵庫が当選!"); break;
            case 4: System.out.println("ビデオが当選!"); break;
            default: System.out.println("はずれです。"); break;
        }
    }
}

解説3

  1. (1)変数lotに値10を代入します。
  2. (2)switchの式でlotの値を返します。lotの値は10です。
  3. (3)該当するcase値を捜します。この場合、該当するcase値がないため、defaultの文を実行します。

実行結果3

D:\JAVA>javac ExControl6.java

D:\JAVA>java ExControl6
はずれです。

D:\JAVA>

2if、switch