Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

제어문 2 본문

JAVA/Basic

제어문 2

붓그린 2017. 6. 16. 17:08
     
1.추상화 > 2.캡슐화 > 3.다양성 > 4.배열 > 5.상속성


[ 이중 for문 ]
- 제어문 내부에 또 다른 제어문
- outer for문*inner for문 = 반복할 횟수 

package j0530;
// 이중 for 문
public class ForTest2 {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("중첩 for문(이중for문)");
                for (int a=0;a<5;a++) {
                        //System.out.println("a값은 "+a);
                        for (int b=0;b<5;b++) {
                                System.out.println("a="+a+", b="+b);
                        }
                        System.out.println();
                }//outer for
        }

}

1) for문 초기값 실행
2) for문 조건식 실행
3) 내부 for문 초기값 실행
4) 내부 for문 조건식 실행
5) 출력
6) 내부 for문 증감식 실행
7) 내부 for문 조건식 실행
8) 출력
9) 조건이 거짓일 경우 내부 for문 종료 후 출력
10) fot문 증감식 실행
11) outer for문 * inner for문 = 반복할 횟수만큼 실행, 출력







[ 탈출문 ]
- 제어문 중에서 어느 특정 조건에 따라서 더 이상 문장을 수행하지 않고 중간에 빠져나가는 문

탈출문 종류
1) break문
2) continue문
3) return문


1.Break문
- 반복문 내부(while, do ~ while, for문)에서 주로 사용)
- 자신이 포함된 가장 가까운 반복문을 벗어난다.

1) 레이블이 있는 break문
- 레이블과 가장 가까운 루프를 탈출한다.
=> C언어의 goto문과 유사

package j0530;
// 이중 for 문
public class BreakTest2 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("레이블이 있는 Break문");
                //레이블명을 명명(북마크와 같은 개념) : 대소문자 구분
                // 형식) 레이블명:
                A:
                for (int a=0;a<5;a++) {
                        for (int b=0;b<5;b++) {
                                // 특정조건을 추가
                                if(b==2) break A; // 조건식=> break 레이블명;
                                System.out.println("a="+a+", b="+b);
                        }
                        System.out.println();
                }//outer for
               // A: 아래의 레이블을 명명할 경우 인식하기 못함
                System.out.println("이중for문 종료");
        }

}

레이블이 있는 Break문
a=0, b=0
a=0, b=1
이중for문 종료

-> 강제탈출문, 특별한 경우가 아니면 레이블을 쓰는 것을 권장하지 않음

2) 레이블이 없는 break문 : default
 - break문과 가장 가까운 루프(for)를 탈출한다.

package j0530;
// 이중 for 문
public class BreakTest {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("레이블이 없는 Break문");
                for (int a=0;a<5;a++) {
                        for (int b=0;b<5;b++) {
                                // 특정조건을 추가
                                if(b==2) break; //비교연산자
                                System.out.println("a="+a+", b="+b);
                        }
                        System.out.println();
                }//outer for               
                System.out.println("이중for문 종료");
        }
}

레이블이 없는 Break문
a=0, b=0
a=0, b=1

a=1, b=0
a=1, b=1

a=2, b=0
a=2, b=1

a=3, b=0
a=3, b=1

a=4, b=0
a=4, b=1

이중for문 종료





2.continue문 (skip문)
- 어느 특정조건에 만족하는 continue문을 만나게 되면 continue 이하 문장을 수행하지 않고 건너 뛴다.
- while, do ~ while문의 경우 조건식으로 이동
- for문의 경우 증감식으로 이동
- continue문가 가장 가까운 루프에 적용
- coutinue문은 반복문 전제를 벗어나지 않고 다음 반복을 수행한다.
<-> break문은 반복문 전체를 벗어난다.

1) 레이블이 있는 경우

package j0530;

public class ConTest {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("레이블이 없는 Continue문");
                A:
                for (int a=0;a<5;a++) {
                        for (int b=0;b<5;b++) {
                                // 특정조건을 추가
                                if(b==2) continue A; // b=2를 제외하고 a++로 돌아감
                                System.out.println("a="+a+", b="+b);
                        }
                        System.out.println();
                }//outer for
                System.out.println("이중for문 종료");
        }
}

레이블이 없는 Continue문
a=0, b=0
a=0, b=1
a=1, b=0
a=1, b=1
a=2, b=0
a=2, b=1
a=3, b=0
a=3, b=1
a=4, b=0
a=4, b=1
이중for문 종료


2) 레이블이 없는 경우 

package j0530;

public class ConTest {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("레이블이 없는 Continue문");
                for (int a=0;a<5;a++) {
                        for (int b=0;b<5;b++) {
                                if(b==2) continue; // b=2만 제외(skip)하고 b++로 돌아감
                                System.out.println("a="+a+", b="+b);
                        }
                        System.out.println();
                }//outer for
                System.out.println("이중for문 종료");
        }
}

레이블이 없는 Continue문
a=0, b=0
a=0, b=1
a=0, b=3
a=0, b=4

a=1, b=0
a=1, b=1
a=1, b=3
a=1, b=4

// b=2만 제외(skip)하고 b++로 돌아가서 수행 


*continue와 break의 차이점
- continue : 특정 조건에 해당하는 것만 수행하지 않고 루프를 탈출하지 않음
- break : 특정조건에 해당하는 경우 루프를 탈출


3.ruturn문

















'JAVA > Basic' 카테고리의 다른 글

정적 메서드, API, 동적 메서드  (0) 2017.06.16
객체지향 프로그래밍  (0) 2017.06.16
객체지향언어  (0) 2017.06.16
다중IF문, While문, For문  (0) 2017.06.16
이클립스 설치 및 환경설정  (0) 2017.06.16
Comments