[Java 04] 자바 반복문 (for문, while문)

for문

프로그램을 작성하다 보면 똑같은 실행문을 반복적으로 실행해야 하는 경우가 많이 발생합니다. 1부터 100까지의 합을 구하기 위해서는 100개의 실행문이 필요하지만, for문을 사용하면 획기적으로 코드 길이와 단순 반복작업을 줄일 수 있습니다.

for(초기화식; 조건식; 증감식) {
  실행문
}

초기화식 생략

초기화식이 필요없는 경우 아래와 같이 생략이 가능합니다.

int i = 1;
for( ; i <= 100; i++) {...}

초기화식이나 증감식이 둘 이상인 경우

for(int i = 0, j = 100; i <= 50 && j >= 50; i++, j --) {...}

for문 예제 (1)

이 예제에서 초기값은 i=0이 되고 조건식은 i <= 100, 그리고 증감식은 i++이 됩니다.

public static void main(String[] args) {
  int sum = 0;

  for(int i=1; i <= 100; i++) {
    sum = sum + 1;
  }
System.out.println("1~100까지의 합 : " + sum);
}


실행결과

1~100까지의 합 : 5050

for문 예제 (2)

이번에는 구구단을 출력하는 코드입니다. 해당 코드는 이중 for문으로 구성되어 있습니다. 바깥의 for(int i = 2; i <=9; i++) {...}의 2부터 9까지 변하면서 총 8번 반복 실행됩니다. int i = 2;일 때, int j가 1~9까지 반복하며 2*j 계산값들을 출력합니다. 그 다음 int i = 3, 4, ... 9까지 해당 실행문이 반복 시행되며 구구단을 출력하게 됩니다.

public static void main(String[] args) {		
  for(int i=2; i <=9; i++) {         
    System.out.printf("\n*** %d단 ***\n", i);
    
    for(int j=1; j <=9; j++) {
      System.out.printf("%d x %d = %d\n", i, j, i*j);
    }
  }
}


실행결과

*** 2단 ***
2 x 1 = 2
2 x 2 = 4 
2 x 3 = 6
...
--- 이하생략 ---

while문

for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true인 경우에 계속 반복합니다. 조건식은 비교 또는 논리 연산식이 주로 오는데, 조건식이 false이면 반복을 멈추고 while문을 종료합니다.

while(조건식) {
  실행문;
}

while문 예제

아래의 while문은 for문 예제 (1)과 동일하게 1~100까지의 합을 출력하는 코드입니다.

while(i <= 100) {
	sum += i;
	i++;
}
System.out.printf("1~%d까지 합 : %d" , i-1 ,sum);
}


실행결과

1~100까지의 합 : 5050

do-while문

do-while문은 while문과 반복 실행한다는 점에서 비슷한 점을 가지고 있습니다. while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라 반복 실행을 계속할지 결정하는 경우도 발생합니다. 이때 do-while문을 활용할 수 있습니다.

do {

  실행문;

} while (조건식)   // 조건식이 true인 경우 실행문을 반복, false인 경우 do-while문 종료

do-while문 예제

import java.util.Scanner;

public class practice {
public static void main(String[] args) {
  System.out.println("메시지를 입력하세요.");
  System.out.println("프로그램을 종료하려면 q를 입력하세요");

  Scanner sc = new Scanner(System.in);
  String inputString;

  do {
  System.out.print(">");
  inputString = sc.nextLine();
  System.out.println(inputString);
  
  } while (!inputString.contentEquals("q"));
  System.out.println();
  System.out.println("프로그램 종료");
  sc.close();
}
}

실행결과

메시지를 입력하세요.
프로그램을 종료하려면 q를 입력하세요.

> 안녕하세요
안녕하세요
> Hellow Java!
Hellow Java!
> q
q

프로그램 종료

braek문

break문은 반복문인 for문, while문, do-while문 실행을 중지할 때 사용합니다. break문의 3가지 역할은 다음과 같습니다.

<break문의 역할 3가지>

  1. switch문에서 switch문을 벗어나는데 사용
  2. 반복문에서 반복루프를 벗어나는데 사용
  3. 중첩된 반복문을 한번에 빠져나갈 때

break문 예제 (1)

1~6까지의 정수를 무작위로 뽑는 반복문, 만약 숫자가 6이 나오면 반복문 종료

public class practice {
public static void main(String[] args) {
  while (true) {
    int num = (int) (Math.random() * 6) + 1;
    System.out.println(num);
    if (num == 6) {
      break;
    }
  }
  System.out.println("프로그램 종료");
}
}

실행결과

2
4
3
6
프로그램 종료

break문 예제 (2)

중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(라벨)을 붙이고 break : 이름을 사용합니다.

public class practice {
public static void main(String[] args) {
Otter: for (char upper = 'A'; upper <= 'Z'; upper++) {   // Otter라는 라벨 붙임
  for (char lower = 'a'; lower <= 'z'; lower++) {
    System.out.println(upper + "-" + lower);
    
    if (lower == 'g') {
        break Otter;    // break Otter;을 사용해 바깥쪽 반복문까지 종료
    }
  }
}
System.out.println("프로그램 실행 종료");
}
}

실행결과

A-a
A-b
A-c
A-d
A-e
A-f
A-g
프로그램 실행 종료

continue문

continue문은 for, while, do-while문에서만 사용되며 특정 조건을 만족하는 경우에 continue문을 실행해 그 이후의 문장을 사용하지 않고 다음 반복으로 넘어갑니다.

contoinue문 예제

1~10사이의 숫자 중에서 짝수만 출력하는 코드

public class practice {
public static void main(String[] args) {
  for(int i=1; i <=10; i++) {
    if(i%2 != 0 ) {
      continue;
    }
    System.out.println(i);
  }
}
}

실행결과

2
4
6
8
10

태그:

카테고리:

업데이트:

댓글남기기