1. 順序構造
2. 分岐構造
if() {
}
else {
}
switch文:
class Example {
public static void main(String[] args) {
int value = 6;
switch(value) {
case 1:
System.out.println("A");
break;
case 6:
System.out.println("B");
break;
default:
System.out.println("C");
break;
}
}
}
valueはbyte, short, int, char, enum, Stringのみ使用可能。
caseの後にbreakを記述しないと、次のbreakまでのすべてのコードが実行されます。
この特性を利用して、成績照会システムを作成できます。
import java.util.Scanner;
class ScoreChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
switch(score / 10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不合格");
break;
case 6:
System.out.println("合格");
break;
case 7:
System.out.println("中等");
break;
case 8:
System.out.println("良好");
break;
case 9:
System.out.println("優秀");
break;
case 10:
if(score == 100) {
System.out.println("満点");
break;
}
default:
System.out.println("0から100までの数値を入力してください");
break;
}
}
}
3. ループ構造
for(初期化; 条件; 更新) {
}
while(条件) {
更新;
実行コード;
}
do {
更新;
実行コード;
} while(条件);
初期値が条件を満たしていない場合:
import java.util.*;
class LoopExample {
public static void main(String[] args) {
int count = 10;
while(count < 5) {
System.out.println(count);
}
System.out.println(count);
count = 10;
do {
System.out.println(count);
count++;
} while(count < 5);
System.out.println(count);
}
}
break:
int index = 1;
while(index < 5) {
if(index == 3) {
break;
}
index++;
}
breakはループを終了します。
import java.util.*;
class NestedLoopBreak {
public static void main(String[] args) {
for(int outer = 0; outer < 5; outer++) {
for(int inner = 0; inner < 5; inner++) {
if(inner == 3) {
break;
}
System.out.println("outer=" + outer + "|inner=" + inner);
}
}
}
}
breakは最も内側のループのみを終了し、その後にコードを書くことはできません。
continue:
import java.util.*;
class NestedLoopContinue {
public static void main(String[] args) {
for(int outer = 0; outer < 5; outer++) {
for(int inner = 0; inner < 5; inner++) {
if(inner == 3) {
continue;
}
System.out.println("outer=" + outer + "|inner=" + inner);
}
}
}
}
innerは0,1,2,4のときに表示されます。
breakではinnerが4にはなりません。
ループラベル:
import java.util.*;
class LabeledLoop {
public static void main(String[] args) {
outerLoop: for(int outer = 0; outer < 5; outer++) {
innerLoop: for(int inner = 0; inner < 5; inner++) {
if(inner == 3) {
break outerLoop;
}
System.out.println("outer=" + outer + "|inner=" + inner);
}
}
}
}
innerLoop内でinner==3の場合、outerLoopを終了します。
continueも同様です。
import java.util.*;
class LabeledContinue {
public static void main(String[] args) {
outerLoop: for(int outer = 0; outer < 5; outer++) {
innerLoop: for(int inner = 0; inner < 5; inner++) {
if(inner == 3) {
continue outerLoop;
}
System.out.println("outer=" + outer + "|inner=" + inner);
}
System.out.println("---------");
}
}
}
continueは外側のループを中断し、内部のループは実行されません。外側のループの次のイテレーションから再開します。
outer=0, inner=3のとき、現在のループを停止し、次のouter=1のイテレーションから開始します。
whileにもラベルを使用できます: label: while(...) {}
Math.pow(a, b); これはaのb乗を計算します。