- 반복문의 개념과 필요성 이해
- for문의 구조와 활용 방법
- while문과 do-while문의 차이점 파악
- break와 continue를 활용한 반복 제어
- 다양한 반복문 예제를 통한 실습
반복문이란?
반복문은 특정 코드를 여러 번 반복해서 실행하고자 할 때 사용하는 제어문이다. 같은 코드를 여러 번 작성하는 대신 반복문을 사용하여 효율적으로 프로그래밍할 수 있다.
반복문의 종류:
- for문: 반복 횟수가 명확할 때 주로 사용
- while문: 조건에 따른 반복 실행
- do-while문: 최소 한 번은 실행 후 조건 검사
<for문>
for(초기식; 조건식; 증감식) {
반복 실행할 코드;
}
구성 요소:
- 초기식: 반복을 시작하기 전 변수를 선언하고 초기값 설정, 처음 딱 한 번만 실행
- 조건식: 반복을 계속 진행할지 여부를 판단하는 조건, true면 반복 진행/false면 반복 종료
- 증감식: 매번 반복이 끝난 후 변수값을 증가/감소시키는 식
기본 for문 예제
package com.kh.loop;
public class For {
public static void main(String[] args) {
// "안녕하세요"를 10번 출력
for(int i = 0; i < 10; i++) {
System.out.println("안녕하세요");
}
// 1부터 5까지 순차적으로 출력
for(int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
}
실행 결과:
안녕하세요
안녕하세요
...
안녕하세요
1 2 3 4 5
Java의 지역변수와 블록 scope
Java의 지역변수는 특정 메서드나 블록({}) 내부에서 선언되며, 선언된 블록 범위 내에서만 접근이 가능하다. 해당 블록이 종료되면 블록 내부의 변수도 함께 소멸된다.
for문 활용 예제들
홀수만 출력하기
// 1~10 숫자 중 홀수만 출력
for(int i = 1; i <= 10; i++) {
if(i % 2 == 1) {
System.out.print(i + " ");
}
}
짝수의 합 구하기
// 1~100 숫자 중 짝수의 합을 출력
int sum = 0;
for(int i = 1; i <= 100; i++) {
if(i % 2 == 0) {
sum += i;
}
}
System.out.println("1~100 숫자 중 짝수의 합: " + sum);
Math.random() 활용하기
Math.random() 함수:
- java.lang.Math 클래스에서 기본적으로 제공하는 함수
- 호출 시 0.0~0.999999999999 사이의 랜덤값을 반환
- 랜덤 수 생성 공식: (int)(Math.random()*(최댓값 + 1 - 최솟값)) + 최솟값
// 1~10 사이의 랜덤 수 생성 후 1부터 해당 수까지의 합 구하기
int num = (int)(Math.random() * 10) + 1;
int sum = 0;
for(int i = 1; i <= num; i++) {
sum += i;
}
System.out.println("random 수: " + num);
System.out.println("1~" + num + "까지의 더한 값: " + sum);
문자열 처리하기
// 문자열의 각 문자를 개별적으로 출력
String str = "Hello";
for(int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i) + " ");
}
// 사용자 입력 문자열의 짝수 자리 글자만 출력
Scanner sc = new Scanner(System.in);
System.out.print("문자열 입력: ");
String input = sc.next();
for(int i = 0; i < input.length(); i++) {
if(i % 2 == 1) { // 인덱스가 홀수인 경우 (실제로는 짝수 번째 문자)
System.out.print(input.charAt(i));
}
}
중첩 for문으로 구구단 출력
// 2단부터 9단까지 모든 구구단 출력
for(int i = 2; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i + " x " + j + " = " + (i * j));
}
}
<while문>
while(조건식) {
반복할 코드
[탈출이 가능한 구조]
}
while문은 조건식이 true인 동안 계속해서 반복 실행하며, false가 되면 반복을 종료한다.
while문 기본 예제
package com.kh.loop;
import java.util.Scanner;
public class While {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 기본 while문 예제
int i = 0;
while(i < 10) {
System.out.println("안녕하세요");
i++;
}
// 사용자가 0을 입력할 때까지 입력받아 출력
int n = sc.nextInt();
while(n != 0) {
System.out.println(n);
n = sc.nextInt();
}
}
}
while문 활용 예제
랜덤 수 합계 계산
// 사용자가 0을 입력할 때까지 랜덤값(1~100)을 생성하여 합계 계산
int n = sc.nextInt();
int sum = 0;
while(n != 0) {
int num = (int)(Math.random() * 100) + 1;
sum += num;
System.out.println("생성된 랜덤 수: " + num);
n = sc.nextInt();
}
System.out.println("모두 더한 값: " + sum);
메뉴 선택 시스템
// 서비스 메뉴 시스템
int num;
System.out.println("서비스 번호를 입력하세요.");
System.out.println("1. 추가");
System.out.println("2. 삭제");
System.out.println("3. 종료");
num = sc.nextInt();
while(num != 3) {
switch(num) {
case 1:
System.out.println("추가 완료");
break;
case 2:
System.out.println("삭제 완료");
break;
default:
System.out.println("잘못된 입력");
}
System.out.println("서비스 번호를 입력하세요.");
num = sc.nextInt();
}
<do-while문>
do {
실행할 코드
} while(조건식);
do-while문의 핵심:
- 처음에 무조건 실행코드를 한 번 실행한 후 조건식을 검사
- 기존의 for/while은 처음 수행될 때 조건검사 후 true일 경우에만 반복코드를 실행
- do-while은 첫 실행은 조건검사 없이 무조건 실행
do-while문 예제
package com.kh.loop;
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 사용자가 원하는 수를 계속해서 더하는 프로그램
// 사용자가 0을 입력하면 종료
int inputNum, sum = 0;
do {
System.out.print("숫자 입력: ");
inputNum = sc.nextInt();
sum += inputNum;
} while(inputNum != 0);
System.out.println("결과: " + sum);
}
}
실행 결과:
숫자 입력: 5
숫자 입력: 3
숫자 입력: 2
숫자 입력: 0
결과: 10
<break와 continue>
break문
break; // 가장 가까운 반복문 또는 switch문을 탈출
break문이 실행되는 순간 가장 가까운 반복문 또는 switch문을 탈출한다.
break문 예제
package com.kh.loop;
public class Break {
public static void main(String[] args) {
// 랜덤값(1~100)을 발생시켜 출력
// 단, 랜덤값이 3의 배수일 경우 반복문 종료
while(true) {
int num = (int)(Math.random() * 100) + 1;
System.out.println(num);
if(num % 3 == 0) {
System.out.println("3의 배수 발견! 종료");
break;
}
}
// 로또번호 추첨 - 1~45까지 중 랜덤하게 6개 추출
for(int i = 0; ; i++) {
int num = (int)(Math.random() * 45) + 1;
System.out.print(num + " ");
if(i >= 5) {
break;
}
}
}
}
문자열 입력 프로그램
// 사용자에게 문자열을 입력받아 해당 문자열의 길이를 출력
// 단, 사용자가 "exit"를 입력할 때까지 반복
Scanner sc = new Scanner(System.in);
String str;
while(true) {
System.out.print("문자열 입력: ");
str = sc.next();
if(str.toLowerCase().equals("exit")) {
System.out.println("프로그램을 종료한다.");
break;
}
System.out.println("길이: " + str.length());
}
continue문
continue; // 그 뒤의 코드를 실행하지 않고 다시 반복문의 맨 위로 이동
continue 코드를 실행시 그 뒤의 코드를 실행하지 않고 다시 반복문의 맨 위로 이동하여 반복문을 진행한다.
continue문 예제
package com.kh.loop;
public class Continue {
public static void main(String[] args) {
// 1부터 50까지의 숫자 중 5의 배수만 출력
for(int i = 1; i <= 50; i++) {
if(i % 5 != 0) {
continue; // 5의 배수가 아니면 아래 코드를 건너뛰고 다음 반복으로
}
System.out.print(i + " ");
}
}
}
실행 결과:
5 10 15 20 25 30 35 40 45 50
예제 1: 커피 주문 키오스크
Scanner sc = new Scanner(System.in);
System.out.print("아메리카노를 몇 잔 구매하시겠습니까? (1100원): ");
int quantity = sc.nextInt();
int totalPrice = 0;
for(int i = 0; i < quantity; i++) {
totalPrice += 1100;
}
System.out.printf("결제하실 금액 %d원입니다.\n", totalPrice);
예제 2: 구구단 출력
// 특정 단의 구구단 출력
int dan = 2;
for(int i = 1; i <= 9; i++) {
System.out.println(dan + " x " + i + " = " + (dan * i));
}
예제 3: 문자열 분석
// 문자열의 각 문자를 인덱스와 함께 출력
String text = "Hello";
System.out.println("문자열: " + text);
System.out.println("길이: " + text.length());
for(int i = 0; i < text.length(); i++) {
System.out.println("인덱스 " + i + ": " + text.charAt(i));
}
for문 vs while문 vs do-while문 언제 사용?
for문을 사용하는 경우
- 반복 횟수가 명확할 때
- 카운터 변수가 필요할 때
- 배열이나 컬렉션을 순회할 때
while문을 사용하는 경우
- 조건에 따른 반복이 필요할 때
- 반복 횟수를 미리 알 수 없을 때
- 사용자 입력에 따른 반복 처리
do-while문을 사용하는 경우
- 최소 한 번은 실행되어야 할 때
- 메뉴 시스템이나 게임 루프 구현 시
<정리 및 요약>
for문:
- 반복 횟수가 명확할 때 사용
- 초기식, 조건식, 증감식의 구조
- 카운터 변수를 활용한 제어
while문:
- 조건에 따른 반복 실행
- 탈출 조건을 명확히 설정해야 함
- 무한루프 주의 필요
do-while문:
- 최소 한 번은 실행 보장
- 실행 후 조건 검사
- 메뉴 시스템 구현에 적합
제어문:
- break: 반복문 완전 탈출
- continue: 현재 반복 건너뛰기
'Java' 카테고리의 다른 글
| Java_08) 다차원 배열 (6) | 2025.08.26 |
|---|---|
| Java_07) array - 배열 (1) | 2025.08.26 |
| Java_05) Control - 조건문(제어문) (1) | 2025.08.26 |
| Java_04 ) Operator 연산자 (0) | 2025.08.21 |
| Java_03 ) Type Conversion - 형변환 (1) | 2025.08.20 |