Basic/Java

[Java] 반복문 while for 흐름제어

카고형 2020. 3. 20. 23:30
728x90
Java Loop



while 반복문

기본 구문
while(condition){
    statements
}

condition 값이 참인 동안 내부 블록을 반복하여 실행함
초기 condition 값이 false 이면 내부 블록은 실행되지 않음
    condition 값이 계속 true면 무한반복
    무한 반복은 주의해야 하지만, 의도적으로 무한 반복을 실행하는 경우도 있다



public class Main {
       public static void main(String[] args) {
       int x =1;
       while(x <= 10) {
             
             System.out.println(x);
             x = x + 1;//x++;
       }
       
       System.out.println("마지막 x " + x);
       }
}

결과는 이렇게 나옴니다


결과를 보면 x 가 1부터 10 까지 참값이기 때문에 열번 반복을 하여
출력 결과가 1 부터 10 까지 출력 되었고
반복문 을 나오고 나서 x 출력했을때 값이 11 이 나왔습니다 

무한 반복의경우 조건을 항상 true이면 무한 반복을 시킬 수 있다 

do  ~ while 반복문

do 블록을 우선 한번 수행하고 반복 여부는 while에서 확인
적어도 한 번은 수행되야 하는 반복 구문에  사용함 
또 while 문에서 확인할 조건이 반복 구문 내에서 할당되는 경우도 잘 쓴다

예제를 통해 알아보자
int total = 0;
int value = 0;

do{
        System.out.print("숫자 입력 [0 to quit] >");
        value = scanner.nextInt();
        total += value;
    }while(value != 0);  //입력 값이 0이 아닌 경우 True 0이면 false 이 되니까 루프를 빠져나감

루프를 빠져 나가는 것은 자기 몫 이다 의도한게 아니면 무한 반복은 피하자

대부분 while 은 반복 회수를 모를때 쓰고 알면 for 문을 쓰는거 같다




for 반복문

for (int score=0; score<5; score++){     // score가 0부터 5까지 1 증가되면서 반복됨
        
        System.out.println("Test" + score);
        
}


일단 앞서 한 while 처럼 반복 하는데
for 문은  ( 초기화, 조건식, 탈출조건?) 이런식으로 구성하는데
while 문 과 다르게 () 안에 초기화 조건식 탈출방법 까지 쓰기떄문에 
참인 경우와 루프 탈출할 지점을 선택? 할수있음 
그래서 for 문 은 반복 횟수 를 알고 정할수 있을때 사용 함(무조건 적인것은 아님)


while 문 으로 하면
int score =0;  // 초기화
while(score <5){ // 조건식
        System.out.println(score);
        score++; // 탈출 방법 
}

위에 for 문 과 while 문 에 결과는 똑같이 나옵니다.
취향 차이? 느낌인거 같아요..ㅋ


흐름 제어(continue, break)

continue
반복문 내에서 continue 를 만나면 이후 문자는 수행 하지 않음
반복 블록을 벗어나지 않고 블록의 가장 마지막으로 이동, 다시 반복조건을 검사

for(int score = 0; score < 10; score++) {
    if(score % 2 == 0) {
        continue;
    }
    System.out.println("Test" + score);
              
}
위에 코드는 0 ~ 9 까지 2의 배수는 건너뛰고 출력하는 값이 나옴니다 
2의 배수는 if 문 으로 들어가 continue 만나서 건너뛰기 때문에 결과는 홀수 만 출력 되게 됨


break
반복문 수행을 중단 하고 반복 블록 다음 문장을 실행
중첩된 방복문일경우 한 단계씩 벗어남

int sum = 0;
while(true){
    sum += 1;
    if(sum > 50){
        break;
    }
    System.out.println(sum);
}

위에 코드는 1 부터 50 까지의 수를 출력 하는 프로그램인다 
50이 넘어가면 if문 에 break 를 만나 반복문을 나오게 된다


728x90