目次
1.break
2.continue
3.label
4.return
5.さいごに
1. break
直前のループを抜ける。
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
// 拡張for文でnumberListをぐるぐる回す
for (Integer number : numberList) {
System.out.println(number);
// numberが2のとき直前のループを抜ける
if (number == 2) {
break;
}
}
出力結果は下記の様になる。
1
2
ループが二重になっている場合はこちら。
List<String> countList = new ArrayList<String>();
countList.add("1周目");
countList.add("2周目");
countList.add("3周目");
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
for (String count : countList) {
System.out.println(count);
for (Integer number : numberList) {
System.out.println(number);
// numberが2のとき直前のfor文を抜ける
if (number == 2) {
break;
}
}
System.out.println("おわり");
}
出力結果は下記の様になる。
1周目
1
2
おわり
2周目
1
2
おわり
3周目
1
2
おわり
2. continue
continue文以降の処理をスキップし、
次の要素のループ処理へ移る。
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
for (Integer number : numberList) {
if (number == 2) {
continue;
}
System.out.println(number);
}
上記例ではnumberが2のときcontinue以降の出力処理をおこなわず、
numberListの次の要素のループに移る。
出力結果は下記の様になる。
1
3
ループが二重になっている場合はこちら。
List<String> countList = new ArrayList<String>();
countList.add("1周目おわり");
countList.add("2周目おわり");
countList.add("3周目おわり");
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
for (String count : countList) {
for (Integer number : numberList) {
if (number == 2) {
continue;
}
System.out.println(number);
}
System.out.println(count);
}
上記例ではnumberが2のときnumber出力処理を行わず、
numberListの次の要素のループ処理に移る。
出力結果は下記の様になる。
1
3
1周目おわり
1
3
2周目おわり
1
3
3周目おわり
3. label
ループが二重以上になっている場合にlabelを付けることによって、
breakやcontinueで抜けるループを指定することができる。
① breakの場合
List<String> countList = new ArrayList<String>();
countList.add("1周目");
countList.add("2周目");
countList.add("3周目");
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
// ラベル名をつける
firstLabel:for (String count : countList) {
System.out.println(count);
for (Integer number : numberList) {
System.out.println(number);
if (number == 2) {
// ラベルを指定
break firstLabel;
}
}
System.out.println("おわり");
}
breakで抜けることができるのは直前のfor文だが、
labelを使うことによって抜けるfor文を指定することができる。
出力結果は下記の様になる。
1周目
1
2
② continueの場合
List<String> countList = new ArrayList<String>();
countList.add("1周目");
countList.add("2周目");
countList.add("3周目");
List<Integer> numberList = new ArrayList<Integer>();
numberList.add(1);
numberList.add(2);
numberList.add(3);
// ラベル名をつける
firstLabel:for (String count : countList) {
for (Integer number : numberList) {
if (number == 2) {
// ラベルを指定
continue firstLabel;
}
System.out.println(number);
}
System.out.println(count);
}
labelを使うことによって、指定したlabelが付いたのfor文の、
次の要素のループを行うことができる。
出力結果は下記の様になる。
1
1
1
4. return
メソッドを抜ける。(呼び出し元に処理を戻す)
public static void main(String args[]) {
List<String> dayList = new ArrayList<String>();
dayList.add("月曜日");
dayList.add("水曜日");
dayList.add("日曜日");
for (String day : dayList) {
System.out.println(day);
// 平日かどうか出力するメソッドの呼び出し
outputIsWeekDay(day);
}
// 平日かどうか出力するメソッドの呼び出し
private static void outputIsWeekDay(String day) {
if (day.equals("土曜日") || day.equals("日曜日")) {
System.out.println("これは平日ではありません");
return;
}
System.out.println("これは平日です");
}
checkWeekDayメソッドif文内にreturn文を記載することによって、
「これは平日ではありません」が出力されたあと「これは平日です」が出力されないようになっている。
また、メソッドの最後の } に到達すると処理は呼び出し元に戻るので、
戻り値がないときはメソッド最後のreturn文記載は不要。
(そのため「これは平日です」の出力処理後にreturnを記載していない)
出力結果は下記の様になる。
月曜日
これは平日です
水曜日
これは平日です
日曜日
これは平日ではありません
5. さいごに
ここまで読んでいただきありがとうございます!
今回は現場で実装を行っていた際に、間違えやすいなと思ったものを個人的にまとめてみました。
自分のアウトプットの内容が誰かのお役に立てると嬉しいです。。