0
0

[備忘録 その8] Java Silver ~制御文~

Last updated at Posted at 2024-07-23

制御文

制御文とは、プログラムの実行フローを制御するための文法です。代表的な制御文には以下のものがあります

1 . 条件分岐(if文)

2 . switch文

3 . 繰り返し文(for文)

4 . 繰り返し文(while文)

1 . 条件分岐(if文)

if文

if文は条件が真か偽かを評価し、真の場合にのみ特定のコードを実行します。されに、'else if'や'else'を使うことで、複数の条件に応じた分岐を作ることができます。

基本構文(if-else)

if (条件式) {
    // 条件式が真の場合に実行する処理
} else {
    // 条件式が偽の場合に実行する処理
}

int number = 10;

if (number > 0) {
    System.out.println("numberは正の数です。");
} else if (number < 0) {
    System.out.println("numberは負の数です。");
} else {
    System.out.println("numberは0です。");
}

基本構文(else if)

if (条件式1) {
    // 条件式1が真の場合に実行する処理
} else if (条件式2) {
    // 条件式1が偽で、条件式2が真の場合に実行する処理
} else {
    // 条件式1と条件式2がどちらも偽の場合に実行する処理
}

int number = 0;

if (number > 0) {
    System.out.println("numberは正の数です。");
} else if (number < 0) {
    System.out.println("numberは負の数です。");
} else {
    System.out.println("numberは0です。");
}

条件演算子

条件演算子(三項演算子)は、簡単な条件分岐を1行で記述するための演算子です。条件演算子は次のような形式となります。

条件式 ? 真の場合の値 : 偽の場合の値

条件演算子を使うと、条件式が真であれば「真の場合の値」が返され、条件式が偽であれば「偽の場合の値」が返されます。これにより、短い条件分岐を簡潔に記述することができます。

基本構文

 変数名 = 条件式 ? 真の場合の値 : 偽の場合の値;

例1

int number = 10;
String result = (number > 0) ? "正の数" : "負の数または0";
System.out.println(result); // 正の数

例2

int number = 7;
String result = (number % 2 == 0) ? "偶数" : "奇数";
System.out.println(result); // 奇数

例3

int a = 5;
int b = 10;
int max = (a > b) ? a : b;
System.out.println(max); // 10

if文のネスト

if文のネストとはif文の内部にさらにif文を含めることを指します。ネストされたif文を使うことで、複雑な条件分岐を細かく制御できます。ただし、深くネストさせるとコードの可読性が低下する可能性があるため、適切に使用することが重要です。

基本的なネスト例

int number = 10;

if (number > 0) {
    System.out.println("numberは正の数です。");
    
    if (number % 2 == 0) {
        System.out.println("numberは偶数です。");
    } else {
        System.out.println("numberは奇数です。");
    }
} else {
    System.out.println("numberは正の数ではありません。");
}

多重ネストの例

int a = 5;
int b = 10;
int c = 15;

if (a > b) {
    if (a > c) {
        System.out.println("aはbより大きく、かつcより大きいです。");
    } else {
        System.out.println("aはbより大きいですが、cよりは小さいです。");
    }
} else {
    if (b > c) {
        System.out.println("bはaより大きく、かつcより大きいです。");
    } else {
        System.out.println("bはaより大きいですが、cよりは小さいです。");
    }
}

2 . switch文

switch文は、単一の変数や式の値に基づいて、複数のケースの中から実行するブロックを選択する条件分岐文です。これは、if-else文の複数条件をシンプルに表現するのに適しています。

基本構文

switch () {
    case 値1:
        // 式が値1と一致する場合に実行される処理
        break;
    case 値2:
        // 式が値2と一致する場合に実行される処理
        break;
    // 他のケース
    default:
        // どのケースにも一致しない場合に実行される処理
        break;
}
  • 式:整数、文字、列挙型、文字列などの評価結果を使います。
  • case:それぞれのケースは、式の評価結果と一致する値を指定します。
  • break:各ケースの末尾に置かれ、スイッチ文から抜け出します。breakがない場合は、次のケースも続けて実行されます(フォールスルー)。
  • defalut:どのケースにも一致しない場合に実行されるブロックです。

例1

int day = 3;
String dayName;

switch (day) {
    case 1:
        dayName = "月曜日";
        break;
    case 2:
        dayName = "火曜日";
        break;
    case 3:
        dayName = "水曜日";
        break;
    case 4:
        dayName = "木曜日";
        break;
    case 5:
        dayName = "金曜日";
        break;
    case 6:
        dayName = "土曜日";
        break;
    case 7:
        dayName = "日曜日";
        break;
    default:
        dayName = "無効な日付";
        break;
}

System.out.println(dayName); // 水曜日

例2

String color = "red";
String message;

switch (color) {
    case "red":
        message = "色は赤です";
        break;
    case "green":
        message = "色は緑です";
        break;
    case "blue":
        message = "色は青です";
        break;
    default:
        message = "未知の色です";
        break;
}

System.out.println(message); // 色は赤です

フォールスルー

break文がない場合、次のケースに続けて実行されます。

int month = 8;
String season;

switch (month) {
    case 12:
    case 1:
    case 2:
        season = "冬";
        break;
    case 3:
    case 4:
    case 5:
        season = "春";
        break;
    case 6:
    case 7:
    case 8:
        season = "夏";
        break;
    case 9:
    case 10:
    case 11:
        season = "秋";
        break;
    default:
        season = "無効な月";
        break;
}

System.out.println(season); // 夏

3 . 繰り返し文(for文)

for文

for文は、指定した回数だけ繰り返し処理を行うための制御構文です。

基本構文

for (初期化; 条件; 増分) {
    // 繰り返し処理
}
  • 初期化:ループ開始時に一度だけ実行されるコード
  • 条件:各反復の前に評価される式。trueである限りループを繰り返します。
  • 増分:各反復の後に実行されるコード。通常、カウンタ変数を増減します。
for (int i = 0; i < 10; i++) {
    System.out.println("iの値は " + i);
}

for (int i = 0; i < 10; i++) {
    System.out.println("iの値は " + i);
}

拡張for文(for-each文)

拡張for文は、配列やコレクション(ListやSetなど)の要素を順に処理するために使用されます。

基本構文

for (要素の型 変数名 : 配列またはコレクション) {
    // 繰り返し処理
}
  • 要素の型:配列またはコレクションの要素のデータ型
  • 変数名:現在の要素を示す変数。
  • 配列またはコレクション:繰り返し処理する配列やコレクション

ネストされたfor文

for文の中に別のfor文を入れることができます。

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        System.out.println("i = " + i + ", j = " + j);
    }
}

breakとcontinue

  • break:ループを終了します。
  • continue:ループの現在の反復を終了し、次の反復を開始します。

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // iが5になるとループを終了
    }
    System.out.println("iの値は " + i);
}

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;  // iが偶数の場合、次の反復にスキップ
    }
    System.out.println("iの値は " + i);
}

無限ループ

条件を指定せずにfor文を使用すると、無限ループを作成できます。

for (;;) {
    // 無限ループ
    System.out.println("無限ループ");
}

4 . 繰り返し文(while文)

while文は条件が真(true)である間、繰り返し処理を行う制御構文です。条件が偽(false)になった時点でループが終了します。while文には2種類あり、通常のwhile文とdo-while文があります。

while文

基本構文

while (条件) {
    // 繰り返し処理
}
  • 条件:ループを続けるかどうかを決定するブール式。条件が真である限り、ループ内の処理が繰り返されます。

int i = 0;

while (i < 5) {
    System.out.println("iの値は " + i);
    i++;
}

do-while文

do-while文は、少なくとも一度はループ内の処理を実行し、その後条件を評価してループを続けるかどうかを決定します。

基本構文

do {
    // 繰り返し処理
} while (条件);
  • 条件:ループを続けるかどうかを決定するブール式。ループ内の処理が少なくとも一度は実行され、その後条件が真である限り、ループが繰り返されます。

int i = 0;

do {
    System.out.println("iの値は " + i);
    i++;
} while (i < 5);

breakとcontinue

while文とdo-while文でもbreakとcontinueを使用してループの制御を行うことができます。
※内容はfor文と同じ

int i = 0;

while (i < 10) {
    if (i == 5) {
        break;  // iが5になるとループを終了
    }
    System.out.println("iの値は " + i);
    i++;
}

i = 0;

while (i < 10) {
    if (i % 2 == 0) {
        i++;
        continue;  // iが偶数の場合、次の反復にスキップ
    }
    System.out.println("iの値は " + i);
    i++;
}

while文とfor文の使い分け

  • while文: 事前に繰り返し回数が決まっていない場合や、条件が変化するまで繰り返し処理を行う場合に適しています。
  • for文: 繰り返し回数が事前に決まっている場合や、カウンタ変数を使って繰り返し処理を行う場合に適しています。

最初のページ
[備忘録 その1] Java Silver ~Javaプログラミング基礎~

前のページ
[備忘録 その7] Java Silver ~基本データ型の型変換~

次のページ
[備忘録 その9] Java Silver ~クラス定義・オブジェクトの使用 その1~

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0