LoginSignup
3
2

More than 1 year has passed since last update.

break、continue、label、returnの使い方メモ

Last updated at Posted at 2021-11-29

目次

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. さいごに

ここまで読んでいただきありがとうございます!
今回は現場で実装を行っていた際に、間違えやすいなと思ったものを個人的にまとめてみました。
自分のアウトプットの内容が誰かのお役に立てると嬉しいです。。

3
2
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
3
2