Dev/Java

[Java] 반복문

syuare 2025. 4. 30. 23:40

반복문 (for, while, do-while)

컴퓨터에게 일정한 형태의 작업을 반복적으로 수행하도록 할 때 사용한다.

for문

  • 시작 조건이 종결조건을 불만족할 때까지 반복문 내 작성된 명령을 수행해라
  • 단, 1회 수행하고 나면 [조건변화수식]을 반영한 후 재수행해라
for (시작조건; 종결조건; 조건변화수식) {
		...
}

// 예시
for(int i =1; i<= 10; i++) {
	// 안녕하세요 10번 출력
	System.out.println("안녕하세요.");
}

 

break 활용

  • break: 해당 제어문에서 빠져 나오라는 명령어 (탈출 버튼)
  • for 문 외에도 다른 반복문, 제어문에서 사용할 수 있다.
더보기
int customers = 5;
for(int i =1; i<= customers; i++) {
	if(i==4){
		break;
	}
	System.out.println(i + "번째 손님, 어서오세요");
}

continue 활용

  • continue: 해당 제어문의 조건에 만족하면 기존 명령 코드를 무시하라(스킵 버튼)
  • for 문 외에도 다른 반복문, 제어문에서 사용할 수 있다.
더보기
        int customers = 5;
        for(int i =1; i<= customers; i++) {
            if(i==4){
                break;
            }
            if(i==2){
                continue;
            }
            System.out.println(i + "번째 손님, 어서오세요");
        }

향상된 for문

배열 or 여러 원소를 포함한 자료형일 경우 기존의 for문으로 사용할 수 있지만,

향상된 for문을 사용할 경우 코드가 간결해지고 가독성을 높일 수 있다.

  • 향상된 for문은 배열, ArrayList 원소 출력 시 자주 사용한다.\
  • 단점: index를 사용하지 못한다.
    • 물론 별도의 변수를 선언한 후 향상된 for문에 선언했던 변수를 증/감 하도록 하면 index 처럼 사용할 수 있다.
더보기
int[] arr = {100,200,300,400,500};

// 배열 탐색: 일반 for문
for (int i = 0; i<arr.length; i++){
	System.out.println("인덱스: " + i + ", 값: " + arr[i]);
}


// 배열 탐색: 향상된 for문
for (int a : arr) {
	System.out.println("값: " + a);
}

while문

조건이 종결조건만 가지고 있으며, 종결조건이 true일 때까지 반복문을 실행한다.

  • 종결조건을 정확히 제시하지 않으면 해당 반복문은 무한루프에 빠지니 주의할 것 
    • 예) 영원히 종결조건이 false 일 경우 무한루프에 빠지니,
            꼭 true가 될 수 있는 조건을 만들어야 반복문을 빠져나올 수 있다.
while (종결조건) {
		반복할 명령문;
}
더보기
// while문
int i = 1;
while (i <= 10){
	System.out.println(i + "은(는) 10보다 작습니다.");
	i++;
}

do-while문

while과 유사하지만 차이점은

일단 코드를 1회는 무조건 실행한 뒤에 종결조건을 확인하는 반복문이다. (종결 조건을 만족하면 반복문 종료)

do {
		반복할 명령문..
} while (종결 조건)
더보기
int i = 1;
do{
	System.out.println("이번 숫자는 " + i);
	i++;
} while (i<=10);

Appendix. 실습

더보기

2~9 사이의 값을 입력받아 해당 숫자의 구구단을 출력하기.

import java.util.Scanner;

public class Gugudan {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("2~9까지의 구구단을 출력하는 프로그램입니다.");
        System.out.print("출력할 구구단의 단수를 입력하세요: ");

        int i = sc.nextInt();

        if(i>1){
            if(i<10){
                System.out.println("-------" + i + "-------");
                for (int a=1; a<10; a++){
                    System.out.println(i + "x" + a + "=" + (i*a));
                }
            }  else {
                System.out.println("잘못 입력하셨습니다. 2~9 사이의 숫자를 입력해야 됩니다.");
            }
        } else {
            System.out.println("잘못 입력하셨습니다. 2~9 사이의 숫자를 입력해야 됩니다.");
        }

    }
}

 

* 정답

  • if 조건식에 논리 연산자를 활용하면 코드를 확실히 줄일 수 있을 듯
import java.util.Scanner;

public class Gugudan {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("2~9까지의 구구단을 출력하는 프로그램입니다.");
        System.out.print("출력할 구구단의 단수를 입력하세요: ");

        int i = sc.nextInt();

//        if(i>1){
//            if(i<10){
//                System.out.println("-------" + i + "-------");
//                for (int a=1; a<10; a++){
//                    System.out.println(i + "x" + a + "=" + (i*a));
//                }
//            }  else {
//                System.out.println("잘못 입력하셨습니다. 2~9 사이의 숫자를 입력해야 됩니다.");
//            }
//        } else {
//            System.out.println("잘못 입력하셨습니다. 2~9 사이의 숫자를 입력해야 됩니다.");
//        }

        if (i<2 || i>9) {
            System.out.println("잘못 입력하셨습니다. 2~9 사이의 숫자를 입력해야 됩니다.");
        } else {
            System.out.println("-------" + i + " 단-------");
            for (int a=1; a<10; a++){
                System.out.println(i + "x" + a + "=" + (i*a));
            }
        }

    }
}

 

구구단 2단~9단 전부 출력

public class GugudanAll {
    public static void main(String[] args) {
        System.out.println("2~9까지의 구구단을 출력하는 프로그램입니다.");

        for(int i=2; i<10; i++){
            System.out.println("-------" + i + " 단-------");
            for (int a=1; a<10; a++){
                System.out.println(i + "x" + a + "=" + (i*a));
            }
        }
    }
}