본문 바로가기

공부합시다

[JAVA] break문, continue문

Break문

 

자신이 포함 된 하나의 반복문 또는 switch문을 빠져나온다.

주로 if문과 함께 사용해서 특정 조건을 만족하면 반복문을 벗어나게 한다.

 

예제>

 

class BreakBasic
{
 public static void main(String[] args)
 {
 int i = 1;
 boolean seach = false;

 while (i < 100)
 {
  if (i % 5 ==0 && i % 7 ==0) // 5와 7의 공배수를 찾음
  {
   seach = true;
   break; //브레이크가 없을 경우 계속 돌아가기 때문에 없음, if문의 break는 17번줄로 나감
  }
  i++;
 }
 
 if (seach)
  System.out.println("찾는 정수 :" + i);
  
 else
  System.out.println("찾지 못했습니다");
  
 }
}

 


 

 

 

 예제2> 반복문 앞에 라벨(이름)을 붙이고 그 이름을 break, continue와 같이 사용함으로써 해당 라벨로 반복문을 빠져나가거나 반복을 건너뛰게 할 경우 사용

 

 

 

class BreakPoint
{
 public static void main(String[] args)
 {
  /*
  for (int i = 1; i < 10; i++)
  {
   for (int j = 1; j < 10; j++)
   {
    System.out.println("[" + i + "," + j + "]");
    if (i % 2 ==0 && j % 2 == 0) //i, j 둘다 짝수이면...
     break; //하나의 루프문을 빠져나감, 만약 두개 이상의 루프문을 빠져나가고 싶으면.. 라벨을 붙임
   }
  }
  */
  outerLoop: //라벨을 붙여줌
  for (int i = 1; i < 10; i++)
  {
   for (int j = 1; j < 10; j++)
   {
    System.out.println("[" + i + "," + j + "]"); //1,1 - 1,2 - 1,3 .... 1,9 - 2.1, 2.2 찍고 outerLoop로 빠져나감
    if (i % 2 ==0 && j % 2 == 0)
     break outerLoop;
   }
  }
 }
}

 

 


 

 

continue문

 

자신이 포함된 반복문의 끝으로 이동한다. (다음 반복으로 넘어간다)

continue문 이후의 문장들은 수행되지 않는다.

 

주의! 필자는 if문이든 for문이든 중괄호{}를 하는 습관이 있는데.. continue문의 경우 한문장의 실행문장에 대하여 줄괄호 할 경우 예상치 못한 에러(unreachable statement)가 발생함으로 주의 하세요~

 

예제3>

 

 

class ContinueBasic
{
 public static void main(String[] args)
 {
 int i = 0, count = 0;

 while (i ++ < 100)
 {
  if (i % 5 !=0 || i % 7 !=0) // 5와 7의 공배수를 찾음=if (i % 5 ==0 && i % 7 ==0)
   continue; //참값으로 실행되면 15번줄로 감,
       //결국 5와 7의 공배수가 나오기 전까지는 계속 참 값이므로 출력하지 않고 카운터도 되지 않다가
       //거짓값(5와 7의 공배수)가 되면 출력되고 카운터가 올라감
   System.out.println(i);
   count++;
 }
  System.out.println("5와 7의 공배수의 개수는 " + count);

 }
}

 

 


 

 

예제4>

 

class ContinueBasic1
{
 public static void main(String[] args)
 {
  for (int i=0; i <=10; i++) {
   if (i % 2 == 0)
    continue;
    System.out.println(i);
    //if 조건이 참일 때, continue가 실행되어 8번줄은 건너뛰고 9번줄로 오게 됨,
     //결국 참 일 때의 i값은 출력하지 않음
  }
 }
}