1. Top
  2. Java SE
  3. Javaの制御構文

Javaの制御構文

条件分岐(if文)

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

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

?:の説明

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

【例】?:演算子を使用した例です。
public static void main(String[] args) {
    int score = 80; 
    System.out.println("あなたは" + (score >= 80 ? "合格" : "不合格") + "です。");
}


ページの先頭へ

多岐分岐(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; 
}

【例】switch文を使用した例です。
public static void main(String[] args) {
    int lot = 10; 
    switch (lot) {
        //該当する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;
    }
}



ページの先頭へ

繰り返し(for文)

for文は以下の枠内のフォーマットで構成されています。for文も繰り返し処理の一種です。まず繰り返し処理を行う前に初期化を実行します。初期化では一般的に繰り返し処理の判断に使われるローカル変数の宣言(int i = 0;)などが行われます。その後条件を判断しtrueであれば文を実行します。条件にはブール型(true、false)の値を返す式が記載されます。文を実行した後、更新に記載されている処理を実行します。再び条件を判断しtrueであれば文の実行を行います。条件がtrueである限り繰り返し処理を行います。
初期化、条件、更新はそれぞれ削除することが可能です。すべてを削除したfor(;;)は無限ループを意味します。

for (初期化; 条件; 更新) {
    文(複数可)
}

【例】for文を使用した例です。
public static void main(String[] args) {
    //(1)初期値i=0、iが5以下の間forループ内を実行
    for(int i = 0; i <= 5; i++) {
        System.out.println("iは" + i + "です。");
    }
}


ページの先頭へ

繰り返し(while文)

while文は以下の枠内のフォーマットで構成されています。while文は繰り返しの処理を行いたい時に使用します。まず初めに式の値を判別します。式はブール型(true、false)の値を返すものでないといけません。式の値がtrueの場合、文を実行します。文を実行した後、再び式の判別を行い、値がtrueである場合再び文の実行を行います。式の値がtrueである限り、文の実行を繰り返します。式が初めから falseを返す場合、whileブロック中の文は一度も実行されません。

while (式) {
    文(複数可)
}

【例】while文を使用した例です。
public static void main(String[] args) {
    int i = 0;
    while (i <= 5) {
        System.out.println("iは" + i + "です。");
        i++; 
    }
}


ページの先頭へ

繰り返し(do while文)

do while文は以下の枠内のフォーマットで構成されています。do while文は必ず一度でも文を実行させたい場合に使用します。まず初めに文の実行を行います。その後、式の判別を行います。式はブール型(true、 false)を返すものでないといけません。式の結果がtrueであれば再び文の実行を行います。以後式がtrueである限り文の実行を繰り返します。式がfalseになると繰り返し処理を終了します。式が初めからfalseを返す場合でも必ず一度は文が実行されます。
do {
    文(複数可) 
} while (式);

【例】do while文を使用した例です。
public static void main(String[] args) {
    int i = 6;
    do {
        System.out.println("iは" + i + "です。");
        i++;
    } while (i <= 5);
}


ページの先頭へ

繰り返し(break / continue)

break文

break文によりswitch、for、while、do whileの制御文を終了させることができます。break文にはラベル有りのものとラベル無しのものがあり、ラベル有りのものはそのラベルがつけられた制御文までを終了し、ラベル無しのものはbreak文のあるもっとも内側の制御文を終了します。ラベルはラベル名:の形で指定し、一般に終了させたい制御文の前に記載します。

※ラベルは各制御文の前だけでなく任意の場所に記載することができます。break文を実行した後、実行フローを任意の場所に移動させることができるのです。但し、設計が不十分な実行フロー形成を招きやすく推奨はされていません。
ラベル: 制御文 {
    break ラベル; 
}

【例】break文を使用した例です。
public static void main(String[] args) {
    int[][] slot = {{ 4, 35, 63, 16, 50 },
                    { 59, 89, 12, 32, 9 }}; 
    int award = 50;
    boolean judgment = false;

    bingo: // ラベル
    for (int i = 0; i < slot.length; i++) { 
        for (int j = 0; j < slot[i].length; j++) {
            if (slot[i][j] == award ) {
                judgment = true;
                break bingo;
            }
        }
    }

    if (judgment) {   //(8)
        System.out.println("当選です。");
    } else {
        System.out.println("落選です。");
    }
}


continue文

continue文はfor、while、do whileにおいてその後の処理をスキップさせ再び繰り返し処理の初めから実行させたい時に使用します。break文と同様に、ラベル有りのものとラベル無しのものがあります。

ラベル: 制御文 {
    continue ラベル; 
}

【例】continue文を使用した例です。
public static void main(String[] args) {
    StringBuffer word = new StringBuffer("jeve");
    int numWord = word.length(); 
    int count = 0;

    for (int i = 0; i < numWord; i++) {
        if( word.charAt(i) != 'e') {
            continue;
        }
        count++;
        word.setCharAt(i, 'a');
    }
    System.out.println("変更箇所は" + count + "個所です。");
    System.out.println("jeveではなく" + word + "です。");
}


ページの先頭へ

ネストする繰り返し

繰り返し命令の {} で囲まれているところに繰り返し行われる処理を記述する。と説明してきましたが、これは処理ということなので繰り返しの中にさらに繰り返し処理を記述することも可能です。

【例】ネストする繰り返し例です。
for(int i = 0; i < 10; i++){
    for(int c = 0; c < i; c++){
        System.out.print("*");
    }
    System.out.print("\n");
} 



ページの先頭へ