Tiny Bunny [JAVA] 멘토씨리즈 자바_SECTION.05 - 솜님의 블로그
솜님의 블로그
작성일
2024. 7. 17. 01:12
작성자
겨울솜사탕

반복문

반복문은 프로그램 코드 내에서 똑같은 명령을 반복하여 수행하도록 제어하는 명령문이다.

자바에서 사용하는 반복문의 종류는 for문, while문, do-while문이 있다.

 

 

 

for문

for문은 주로 반복 횟수가 정해져 있을 때 사용한다.

for문의 기본 구조는 다음과 같다.

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

① 초기화식 : 반복문에 사용할 변수를 초기화한다.

② 조건식 : 반복 수행할 범위를 구현한다.

③ 실행문 : 조건식이 true이면 false가 나올 때까지 반복하여 실행문을 수행한다.

④ 증감식 : 초기값을 증가하거나 감소시킵니다.

 

 

중첩 for문

중첩 for문은 말 그대로 for문 안에 또 다른 for문을 사용하는 경우를 말한다.

 

int count = 0;
for(int i=0; i<10; i++){ // 외부 for문

	for(int j=0; j<10; j++){ // 내부 for문
    	count++;
    }
}
System.out.println("반복횟수 : " + count);

위 코드를 해석하면 외부 i for문이 실행되고, i for문이 반복할 때마다 내부 j for문이반복된다.

즉, 외부 for문이 1번 반복할 때마다내부 for문이 10회씩 동작하게 된다.

따라서 실행 결과는 == 반복횟수 : 100

 

 

while문

 for문은 조건에 의해 정해진 횟수만큼 반복하는 문법이다.

반면 while문은 반복 횟수가 정해져 있지 않고 조건식이 true일 경우 계속 반복하는 문법이다.

for문보다 구조가 간단하지만, 주의해서 사용하지 않으면 무한 루프 같은 오류에 빠지기 쉬운 문법이다. 

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

while문의 실행 순서는 아래와 같다.

 

1) 조건식(①)을 확인하고 해당 조건이 true.인지 확인한다.

2) 조건을 만족한 경우 while문 안으로 들어가 실행문(②)을 수행한다.

3) 실행문이 완료된 후 다시 조건을 확인한다.

4) 해당 순서를 반복하여 조건식이 만족하지 않을 때 종료한다.

 

 

 

do-while문

do-while문은 while문과 같이 조건을 만족할 때까지 반복한다.

다만 while문과 다른 점은 먼저 루프를 한 번 실행한 후 조건식을 검사한다는 점이다.

즉, 조건식의 결과와는 상관 없이 무조건 한 번은 루프를 실행한다.

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

위의 내용과 같이 do-while문은 중괄호{} 안의 실행문이 먼저 실행되고,

이후 조건식이 true이면 수행하게 된다.

반복문을 최초 1회는 무조건실행해야 할 경우 사용하면 좋다.

  

 

 

기타 제어문

1. continue문

반복문 안에서 continue문을 만나면 이후의 실행 코드는 수행되지 않고, 반복문의 처음으로 돌아가 반복문을 진행하도록 한다. for문의 경우 증감식으로 이동하며, while문과 do-while문은 조건식으로 이동한다.

package section05;

public class EX05_07{
	public static void main(String[] args){
    	int sum = 0;
        
        for(int i=1; i<=100; i++){ // 반복문 실행
        	if(i%2 != 0){
            	continue; // continue를 만나면 이번 즉시 다음 반복을 실행한다.
            }
            sum += i;
        }
    	System.out.println("짝수 합 : " + sum);
    }
}

위 예제를 살펴보면, 

for문을 만나 초기화식을 확인하고,조건문을 확인한다.

조건문시 true라서 for문 안으로 들어오게 되고, 

for문 안에서 if문을 만난다.

 

if문의 경우 i%2가 1이 아니어서 if문 안으로 들어가 continue를 만나게 된다.

continue를 만나서 다음의 코드를 실행하지 않고, 다시 for문의 처음으로 돌아가 반복을 실행한다.

 

 

2. break문

break문은 반복문이 진행되는 중에 특정 조건을 만족해 더 이상 반복문을 실행할 필요 없이 종료할 때 사용한다.

 

break문이 있으면 해당 구문이 있는 루프가 종료된다.

만약 이중 반복문일 경우에는 break문이 있는 반복문만 종료된다.

 

 

 


[응용문제]

 

1. 반복문은 동일한 동작을 여러 번 반복하여 실행하는 구문이다.

 

2. 반복문의 종류?

- if문, for문, while문, do-while문

 

3. 1~100 정수 중 짝수만 더해 출력하는 코드

	public static void main(String[] args) {
		
		// 1~100까지의 정수 중 짝수만을 더해 출력하는 코드
		int sum=0;
		for(int i=1; i<=100; i++) { // 1~100 반복
			if(i%2 == 0) { // 만약 i%2 == 0이라면 
				sum += i; // sum에 i값을 더해준다
			}
		}
		
		System.out.println("1부터 100까지 정수 중 짝수의 합계 : " + sum);
	
	}

 

 

4. 두개의 주사위가 같은 값이 나올 때까지 while 문을 사용해 반복하고, 반복 횟수와 주사위 눈의 번호를 출력해라

package day1_4_1week;

import java.util.Random;

public class Test05 {

	public static void main(String[] args) {

		// 두 개의 주사위가 같은 값이 나올 때까지 while문을 사용해 반복하고,
		// 반복 횟수와 주시위 눈의 번호를 출력해주세요.

		int count=0; // 주사위 반복 횟수 count
		int dice1; // 주사위1
		int dice2; // 주사위2

		Random rand = new Random(); 

		// while문 사용하여 반복
		while(true) {
			// 주사위 1,2 변수에 1~6까지 랜덤값 사용하여 받아온다.
			dice1 = rand.nextInt(6)+1; // 1 ~ 6 랜덤값 받아오기
			dice2 = rand.nextInt(6)+1; // 1 ~ 6 랜덤값 받아오기
			count++;
			// 1,2가 같은 값이 나올 때까지 반복하고, 같은 값이 나오면 반복문 종료
			if(dice1 == dice2) { // 만약 주사위1,2가 같은 값이 나오면
				break; // while문 탈출
			}
		}
		// 종료 후 반복 횟수와 주사위 눈의 번호를 출력한다.
		System.out.println("같은 수가 나왔습니다!");
		System.out.println("주사위 1 : " + dice1 + ", 주사위 2 : " + dice2);
		System.out.println("반복 횟수 : " + count);
	}
}

 

 

5. 별찍기

별찍기의 경우 조건식을 파악하기 위해 디버깅표를 그려보는 것이 중요하다.

 

▼코드

	public static void main(String[] args) {
		// 별찍기
		
		for(int i=0; i<4; i++) { // 4줄 반복하는 for문
			for(int a=0; a<3-i; a++) { // 공백을 출력하는 for문
				System.out.print(" ");
			}
			for(int b=0; b<=i; b++) {// "별 "을 출력하는 for문
				System.out.print("* ");
			}
			System.out.println(); // 줄바꿈
		}

	}

 

▼디버깅표