制御文
制御文とは、プログラムの実行フローを制御するための文法です。代表的な制御文には以下のものがあります
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プログラミング基礎~