어떤 작업이 반복적으로 수행할 때 사용
for문
while문
do-while문
for(초기화; 조건식; 증감식){
수행문
}
🔸 초기화 : 변수를 초기화 하는 부분.(처음 한 번만 수행함)
🔸 조건식 : 조건식의 값이 참이면 계속 반복하고, 거짓일 경우 for문을 벗어난다.
🔸 증감식 : 변수의 값을 증가하거나 감소시키는 식
🔸 for문의 수행 순서
초기화 ➡️ 조건식 검증 ➡️ 조건식이 참일 경우 수행문 수행 ➡️ 증감식 수행 ➡️ 조건식 검증 ...for(int i = 1; i <= 10; i++){ System.out.println(i); }
🔸 변수의 수가 적은 것이 더 간단하고 효율적이기 때문에 불필요한 변수의 사용은 줄이는 것이 좋다.
int num = 0; Scanner sc = new Scanner(System.in); String tmp = sc.nextLine(); num = Integer.parseInt(tmp); for(int i = 0; i < num; i++){ for(int j = 0; j <= i; j++){ System.out.println("*"); } System.out.println(); }
for(타입 변수명 : 배열 / 컬렉션){
반복 수행문
}
🔸 JDK1.5부터 추가된 문법으로 배열, 컬렉션에 저장된 요소에 보다 편리하게 접근할 수 있다.int[] arr = {10, 20, 30, 40, 50}; int sum = 0; for(int tmp : arr){ System.out.printf("%d ", tmp); sum += tmp; } System.out.println("sum = " + sum); // 10 20 30 40 50 // sum = 150
while(조건식){
조건식이 참인 동안 반복할 수행문
}
🔸 while문은
1. 반복해야할 횟수를 모르거나
2. 무한루프를 돌려야 하거나
3. 이중루프를 쓸 때 자주 사용한다.🔸초기화나 증감식이 필요하지 않은 경우에는 for문보다 while문이 더 적합하다.
int i = 5; while(i-- != 0){ System.out.println(i + " "); } // 후위형이기 때문에 조건식 평가후 값이 감소함 (5 =! 0 ➡️ 값 감소시킴 ➡️ System.out.print : 4) // ➡️ 4 3 2 1 0 // 전위형일 경우의 결과값은 4 3 2 1
do{
수행문
} while(조건식);
while문과 반대로 {}안 문장을 먼저 수행 후 조건식을 평가한다.
➡️ 최소 1번은 수행되는 것이 보장된다.int input = 0, answer = 0; answer = (int)(Math.random()*100) + 1; Scanner sc = new Scanner(System.in); do{ System.out.print("1과 100사이의 정수를 입력하세요."); input = sc.nextInt(); if(input > answer){ System.out.println("더 작은 수로 시도하세요."); }else if(input < answer){ System.out.println("더 큰 수로 시도하세요."); } }while(input =! answer); System.out.println("정답입니다.");
switch문에서와 같이 { }문장들을 수행 중 break문을 만나면 자신이 포함된 가장 가까운 반복문을 벗어난다. ➡️ 주로 if문과 같이 사용된다.(특정 조건을 만족하게 되면 반복문을 벗어나도록 설계)
int sum = 0; int i = 0; while(true){ if(sum > 100){ break; } ++i; sum += i; System.out.println("i = " + i); System.out.println("sum = " + sum); } // i = 14, sum = 105
반복이 진행되는 중, continue문을 만나면 반복문의 끝으로 이동해서 다음 반복으로 넘어간다.
for문의 경우 증감식, while문과 do-while문의 경우 조건식으로 이동한다.
➡️ 전체 반복 중 특정 조건을 만족하는 경우를 제외할 때 유용하다.for(int i = 0; i <= 10; i++){ if(i%3 == 0) continue; System.out.println(i); } // 1 2 4 5 7 8 10