제어문이란?
프로그램은 기본적으로 순차적으로 실행한다.
하지만 때로는 특정 조건에 따라 다른 코드를 실행하거나, 특정 코드를 반복해서 실행해야 할 때가 있다.
제어문의 종류:
조건문: 특정 조건에 따라 코드를 선택적으로 실행 (if문, switch문)
반복문: 특정 코드를 반복해서 실행 (for문, while문 등)
조건문은 "조건식"을 통해 true 또는 false를 판단하고, true일 경우 해당하는 코드를 실행
1. <단독 if문>
[표현식]
if (조건식) {
조건에 따라 실행할 구문
}
[동작 원리]
- 조건식이 true → 중괄호 안의 코드 실행
- 조건식이 false → 중괄호 안의 코드 건너뜀
예제 코드:
package com.kh.control;
import java.util.Scanner;
public class If {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력: ");
int num = sc.nextInt();
if (num > 0) {
System.out.println("양수입니다.");
}
else if (num < 0) {
System.out.println("음수입니다.");
}
else {
System.out.println("0입니다.");
}
sc.close();
}
}
실행 결과:
정수 입력: 5
양수입니다.
정수 입력: -3
음수입니다.
정수 입력: 0
0입니다.
2. if문의 세 가지 형태
단독 if문
if (조건식) {
// 조건이 참일 때만 실행
}
if-else문
if (조건식) {
// 조건이 참일 때 실행
} else {
// 조건이 거짓일 때 실행
}
if-else if-else문
if (조건식1) {
// 조건식1이 참일 때 실행
} else if (조건식2) {
// 조건식2가 참일 때 실행
} else {
// 모든 조건이 거짓일 때 실행
}
<switch문>
- 동등 비교만 가능 (정확히 일치하는 값만)
- 정수, 문자, 문자열만 비교 가능
- break문을 사용하여 switch문 종료
- break문이 없으면 다음 case도 계속 실행됨
기본 구조
switch(비교대상) {
case 값1:
실행코드;
break;
case 값2:
실행코드;
break;
default:
기본 실행코드;
}
색상 선택 예제
package com.kh.control;
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 (1-3): ");
int num = sc.nextInt();
switch(num) {
case 1:
System.out.println("빨간색입니다.");
break;
case 2:
System.out.println("파란색입니다.");
break;
case 3:
System.out.println("초록색입니다.");
break;
default:
System.out.println("잘못 입력했습니다.");
}
sc.close();
}
}
실행 결과:
정수 입력 (1-3): 1
빨간색입니다.
정수 입력 (1-3): 4
잘못 입력했습니다.
과일 가격 조회 프로그램
// 과일명을 입력받아 가격을 출력하는 프로그램
System.out.print("구매하고자 하는 과일(사과, 바나나, 딸기) 입력: ");
String fruit = sc.next();
switch(fruit) {
case "사과":
System.out.println(fruit + "의 가격은 2000원입니다.");
break;
case "바나나":
System.out.println(fruit + "의 가격은 3000원입니다.");
break;
case "딸기":
System.out.println(fruit + "의 가격은 5000원입니다.");
break;
default:
System.out.println("잘못 입력하셨습니다.");
}
여러 case를 묶어서 처리하기
// 월별 일수 출력 프로그램
int day = 0;
System.out.print("월을 입력하세요: ");
int month = sc.nextInt();
switch(month) {
case 2:
day = 28;
break;
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
}
if (day == 0) {
System.out.println("잘못된 입력입니다.");
} else {
System.out.println(month + "월은 " + day + "일까지 있습니다.");
}
실행 결과:
월을 입력하세요: 3
3월은 31일까지 있습니다.
월을 입력하세요: 13
잘못된 입력입니다.
예제 1: 나이별 분류 프로그램
package com.kh.control;
import java.util.Scanner;
public class Practice1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String group = null;
System.out.print("나이를 입력: ");
int age = sc.nextInt();
if (age > 0 && age <= 13) {
group = "어린이";
} else if (age <= 19) {
group = "청소년";
} else if (age > 19) {
group = "성인";
}
if (group != null) {
System.out.println(age + "은 " + group + "에 속합니다.");
} else {
System.out.println("잘못된 입력");
}
sc.close();
}
}
실행 결과:
나이를 입력: 15
15은 청소년에 속합니다.
나이를 입력: 25
25은 성인에 속합니다.
예제 2: 성별 판단 프로그램
package com.kh.control;
import java.util.Scanner;
public class Practice2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("성별(m/f): ");
char gender = sc.next().charAt(0);
switch(gender) {
case 'm': case 'M':
System.out.println("남학생입니다.");
break;
case 'f': case 'F':
System.out.println("여학생입니다.");
break;
default:
System.out.println("잘못입력하셨습니다.");
}
sc.close();
}
}
실행 결과:
성별(m/f): m
남학생입니다.
성별(m/f): F
여학생입니다.
성별(m/f): x
잘못입력하셨습니다.
코드 설명:
- sc.next().charAt(0): 문자열의 첫 번째 문자만 추출
- case 'm': case 'M':: 여러 case를 연속으로 사용하여 대소문자 모두 처리
예제 3: 짝수/홀수 판별 프로그램
package com.kh.control;
import java.util.Scanner;
public class Practice3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("양수 입력: ");
int num = sc.nextInt();
if (num <= 0) {
System.out.println("양수가 아닙니다.");
} else if (num % 2 == 1) {
System.out.println("홀수입니다.");
} else {
System.out.println("짝수입니다.");
}
sc.close();
}
}
실행 결과:
양수 입력: 7
홀수입니다.
양수 입력: 8
짝수입니다.
양수 입력: -5
양수가 아닙니다.
if문 vs switch문 언제 사용할까?
if문을 사용하는 경우
- 범위 비교가 필요할 때 (age >= 20)
- 복잡한 조건식이 필요할 때 (score >= 90 && score <= 100)
- 관계 연산자나 논리 연산자를 사용할 때
switch문을 사용하는 경우
- 정확한 값의 일치를 확인할 때
- 여러 개의 값 중 하나를 선택할 때
- 코드의 가독성을 높이고 싶을 때
<정리>
if문:
- 조건식의 결과에 따라 코드를 선택적으로 실행
- 단독 if, if-else, if-else if-else 세 가지 형태
- 범위 비교와 복잡한 조건 처리에 적합
switch문:
- 값의 정확한 일치를 확인하여 코드 실행
- 정수, 문자, 문자열만 비교 가능
- break문으로 switch문 종료
- 여러 case를 묶어서 같은 코드 실행 가능
'Java' 카테고리의 다른 글
| Java_07) array - 배열 (1) | 2025.08.26 |
|---|---|
| Java_06) Loop - 반복문 (4) | 2025.08.26 |
| Java_04 ) Operator 연산자 (0) | 2025.08.21 |
| Java_03 ) Type Conversion - 형변환 (1) | 2025.08.20 |
| Java_02) Output, Input 입출력 (2) | 2025.08.19 |