2013년 10월 24일 목요일

[JAVA기초강좌]자바 제어문/반복문 for , continue

[JAVA기초강좌]자바 제어문/반복문 for , continue

  

 
 
[형식]

for( 초기식 ; 조건식 ; 증감식 ) {
// 조건식이 참일때 실행될 문장 
......
}

초기식은 최초 한번만 실행되고 그이후로 는 나머지 조건식, 실행문장만 반복되고 지정된 조건이 참일 때 한문장 또는 블록을 실행하는 반복문이다.

for문의 괄호 안은 3가지 부분으로 나뉘어져 있다. 구분은 세미콜론(;)으로 하며 첫번째 부분은 초기화, 두번째 부분은 조건검사, 세번째 부분은 증감 부분이다.

복잡한 다중 루프인 경우에는 label을 사용하여 기존 언어의 goto의 효과를 나타낼수 있다.

continue 명령을 사용하면 그 이후부터 블록의 끝까지를 수행하지 않고 for문으로 제어를 이동 시킨다.

continue에 label을 기술하여 그 label 이후부터 다시 실행하게 할 수 있다.

break 명령어의 경우도 label을 써서 중첩된 구조를 빠져 나올 수 있으나 continue와는 다르게 다음 반목문을 수행하지 않는다.

for(;;)의 경우 무한반복을 수행하며 빠져 나오기 위해서는 별도의 조건을 이용하여 break로 빠져 나온다.
 
 
 
[예제]
 
class ForTest {
   public static void main(String[] args) {
 labeltest : 
 for(int i=0; i < 10; i++) {
  for(int j=0; j < 5; j++) {
   if (i % 2 == 0) {
    System.out.println("짝수...");
    continue labeltest;  //첫번째 for문으로 이동
   }
   if (i % 5 == 0) {
    System.out.println("5의배수");
    //첫번째 for문을 빠져나온다.
    //아래문장으로 인해 첫번째 for문은 더 이상 수행안됨
    break labeltest;  
   }
   
   System.out.println(i + " " + j);
  }
 }
   }
}
 
[결과]
 
짝수...
1 0
1 1
1 2
1 3
1 4
짝수...
3 0
3 1
3 2
3 3
3 4
짝수...
5의배수
 
 
 
[예제]
 
//for문의 빈문장  테스트 입니다.
class EmptyTest
{
    public static void main(String[] argv)
    {
        int sum, i;
        sum = 0;
        
        for(i = 1; i <= 10; sum += i, i++)
            ;    // 빈문장
        System.out.println("첫번째 sum = " + sum);
        sum = 0;
        for(i = 1; i <= 10; sum += i, i++)
            { }  // 빈문장
        System.out.println("두번째 sum = " + sum);
        sum = 0;
        for(i = 1; i <= 10; i++)
            sum+= i;
        System.out.println("세번째 sum = " + sum);
    }
}

[결과]
 
첫번째 sum = 55
두번째 sum = 55
세번째 sum = 55

댓글 없음:

댓글 쓰기