프로그래밍 기술/안드로이드

[안드로이드] 28. Java 반복문

언제나휴일 2016. 4. 17. 09:33
반응형

반복문


java 언어에서 특정 조건식이 참일 동안 반복 수행하는 반복문으로 while, do while, for문을 제공합니다.
이 외에 배열처럼 여러 원소를 관리하는 컬렉션의 원소에 공통적인 작업을 수행하는 foreach 문을 제공합니다.
이 부분은 뒤에서 다룰게요.
 
1. while
 
while(
조건 statement) 반복 수행할 statement;
 
먼저 while 문은 조건이 참일 때 반복해서 수행할 하나의 구문을 나타낼 수 있습니다.
물론 여러 개의 구문을 반복 수행하게 하려면 블록 문법을 이용합니다.
예를 들어 1에서 100사이의 합을 구한다면 다음과 같은 알고리즘이 필요하겠죠.

 
합계 sum을 0으로 초기화
 index를 1로 초기화
 반복(index가 100보다 작거나 같다면)
    sum에 sum+index로 설정
    index를 1 증가
 합계 출력
 
private static void exWhile() {
    int sum = 0;
    int index = 0;
    index = 1;
    while(index<=100){
        sum += index;
        index++;
    }
    System.out.println("sum of 1 to 100 is "+sum);
}

실행 결과
sum of 1 to 100 is 5050
 
2. do while 문  
do 반복 수행할 statement; while(조건 statement);
 
do while 문은 while문과 비슷한데 반복해서 수행할 구문을 최소 한 번은 수행해야 할 때 사용합니다.
while 문은 초기 조건식이 거짓이면 while 문 내부의 반복 수행할 구문을 한 번도 수행하지 않습니다.
do while
문은 최소 한 번은 수행함을 보장합니다.
 
예를 들어 메뉴를 출력하고 메뉴를 입력받은 후에 선택한 메뉴의 기능을 수행하는 것을반복하는 구문을 작성합시다.
이 때 최소한 한 번은 메뉴를 출력하고 메뉴를 입력받는 작업을 최소 한 번은 수행해야 할 것입니다.
이 때 do while 문을 사용할 수 있습니다.

 메뉴 출력
 키를 입력
 선택한 키에 따라
    1일 때 추가 수행
    2일 때 삭제 수행
    3일 때 검색 수행
 반복(입력한 키가 종료 키가 아니면)
 
private static void exDoWhile() {
    int key;
    do{
        System.out.println("1: 추가 2:삭제 3:검색 0:종료");
        key = scanner.nextInt();
        switch(key){
        case 1: System.out.println("추가 선택"); break;
        case 2: System.out.println("삭제 선택"); break;
        case 3: System.out.println("검색 선택"); break;
        }
    }while(key !=0);
    System.out.println("종료");
}
 
3. for 문  
for(초기 statement; 조건 statement; 후처리 statement) 반복 수행할 statement;
 
그런데 반복문을 수행하기 전에 초기값을 지정하는 작업과 반복문의 조건을 변화하는 부분을 개발자의 실수로 생략하면 버그가 발생합니다.
이러한 문제를 해결하기 위해 반복문을 표현할 때 초기화 구문과 조건을 변화하는 후처리 구문을 표현하기 쉽게 영역을 구분하는 for 문을 제공하고 있습니다.
 
앞에서 while 문을 이용하여 1부터 100사이의 합을 구하는 것을 for문으로 표현하면 다음과 같습니다.
 
private static void exFor() {
    int sum;
    int index;
 
    for(sum=0,index=1; index<=100; index++){
        sum += index;
    }
    System.out.println("sum of 1 to 100 is "+sum);
}

실행 결과
sum of 1 to 100 is 5050

반응형