반응형

3.1 조건 분기문 완전 정복 💡 – if문, else문, switch문까지 한 번에!

여러 갈래의 길 중 어떤 길을 선택하느냐에 따라 프로그램의 운명이 바뀝니다. 조건문은 자바 흐름 제어의 핵심 중 핵심이에요!

반응형

안녕하세요, 여러분 😊 오늘부터는 자바에서 흐름 제어를 다루는 아주 중요한 단원에 들어갑니다. 바로 조건문과 반복문이죠! 그중에서도 이번 시간에는 조건문에 집중해 볼 거예요. "if 문", "else 문", "else if", 그리고 "switch 문"까지! 이름만 들어도 좀 낯설고 복잡해 보이지만, 걱정 마세요. 하나하나 직접 예제를 따라가면서 이해하다 보면, 분기처리의 원리가 머릿속에 딱! 정리될 거예요. 특히 실무에서 자주 쓰이는 조건 처리 패턴과 주의할 점도 함께 알려드릴 테니 끝까지 집중해주세요! 😊

1. if 문 기본 구조와 예제 💬

자바에서 조건 분기를 위한 가장 기본적인 도구는 if 문이에요. 말 그대로, 조건이 참일 때만 특정 코드를 실행하게 만드는 구조입니다. 프로그램의 흐름을 제어할 수 있는 강력한 도구죠.

📌 기본 문법

if (조건식) {
    // 조건식이 true일 때 실행되는 코드
}

조건식은 true 또는 false로 평가되는 논리 표현식이에요. 조건이 참이면 중괄호 내부의 코드가 실행되고, 거짓이면 무시됩니다.

💻 실습 예제

int number = 10;

if (number > 5) {
    System.out.println("5보다 큽니다!");
}

위 코드에서 변수 number는 10입니다. 조건식 number > 5는 참이기 때문에 "5보다 큽니다!"가 출력돼요. 만약 조건이 거짓이면 아무 일도 일어나지 않아요.

🧠 자주 쓰이는 패턴

  • 입력된 값이 특정 기준을 넘는지 확인할 때
  • 로그인 성공 여부 판단 시
  • 게임에서 조건에 따라 이벤트 발생 처리할 때

📊 요약 정리

구성 요소 설명
if 조건이 참일 때 실행될 코드 블록 지정
조건식 true 또는 false로 평가되는 표현식
중괄호 {} 조건이 참일 때 실행할 코드의 범위 지정

이처럼 if 문은 자바 조건문 흐름 제어의 첫걸음이에요. 실전에서 가장 자주 쓰이는 기본 도구이니, 손에 익을 때까지 반복 연습하는 게 좋아요.

2. if ~ else 문으로 양자택일 처리하기 🔀

앞서 살펴본 if 문은 특정 조건이 참일 때만 코드를 실행하지만, else와 함께 사용하면 조건이 거짓일 때 실행할 대안 코드를 명확히 지정할 수 있어요. 이른바 양자택일 구조죠!

📌 기본 문법

if (조건식) {
    // 조건이 참일 때 실행
} else {
    // 조건이 거짓일 때 실행
}

조건식이 true라면 if 블록의 코드가 실행되고, false라면 else 블록의 코드가 실행됩니다. 단 하나만 실행되는 구조라서 의사결정에 매우 적합하죠.

💻 실습 예제

int score = 70;

if (score >= 80) {
    System.out.println("합격입니다!");
} else {
    System.out.println("불합격입니다.");
}

여기서 score가 80 이상이면 "합격입니다!"가 출력되고, 그렇지 않으면 "불합격입니다."가 출력돼요. 하나는 반드시 실행되니 판단의 흐름이 명확하죠.

🧠 if ~ else의 활용 예시

  • 로그인 성공 여부 판단
  • 버튼 클릭 여부에 따라 화면 전환
  • 입력 값 유효성 확인 결과에 따라 처리 분기

📊 if vs if ~ else 비교

구문 특징
if 조건이 참일 때만 실행, 거짓이면 아무 것도 하지 않음
if ~ else 조건이 참일 때와 거짓일 때 각각 다른 코드 실행

if ~ else는 두 가지 상황 중 하나를 고를 때 유용해요. 예/아니오, 참/거짓, 승/패 같은 이분법적인 상황에 적합하죠!

3. else if 문으로 다중 조건 분기하기 🪜

두 가지 경우만 처리하는 if ~ else로는 부족할 때가 있어요. 예를 들어 점수에 따라 A, B, C, F 등 여러 등급을 나누려면? 이럴 땐 else if를 써서 조건을 여러 단계로 나눌 수 있습니다.

📌 기본 문법

if (조건1) {
    // 조건1이 참일 때 실행
} else if (조건2) {
    // 조건2가 참일 때 실행
} else if (조건3) {
    // 조건3이 참일 때 실행
} else {
    // 위 모든 조건이 거짓일 때 실행
}

조건은 위에서부터 아래로 차례대로 평가되며, 처음으로 참이 되는 조건의 블록만 실행돼요. 나머지는 무시됩니다.

💻 실습 예제

int score = 85;

if (score >= 90) {
    System.out.println("A학점입니다!");
} else if (score >= 80) {
    System.out.println("B학점입니다!");
} else if (score >= 70) {
    System.out.println("C학점입니다!");
} else {
    System.out.println("F학점입니다!");
}

점수가 85이기 때문에 첫 조건(score >= 90)은 거짓, 두 번째 조건(score >= 80)이 참이 되어 "B학점입니다!"가 출력됩니다.

🧠 활용 시 유의사항

  • 조건 순서가 중요해요. 먼저 참이 되는 조건이 실행되고 나머지는 무시돼요!
  • 조건이 겹치지 않도록 조심하세요. 논리적 충돌 방지!
  • 마지막 else는 생략 가능하지만, 모든 조건이 거짓일 경우를 대비해 넣는 것이 좋아요.

📊 구조 요약 비교

조건 분기 방식 특징
if 단일 조건만 평가
if ~ else 양자택일 구조
if ~ else if ~ else 여러 조건을 순차적으로 평가 가능

다중 조건을 깔끔하게 정리할 수 있는 else if 문! 실무 코딩에서도 자주 등장하니 익숙해지는 것이 중요해요. 다음에는 중첩 if 문으로 조금 더 복잡한 분기 상황을 다뤄볼게요.

4. 중첩 if 문 사용 시 주의할 점 🧩

자바에서는 if 문 안에 또 다른 if 문을 넣을 수 있어요. 이를 중첩 if 문(nested if)이라고 부릅니다. 복잡한 조건 분기를 처리할 수 있는 강력한 방법이지만, 주의해서 사용하지 않으면 가독성이 급격히 나빠질 수 있어요.

📌 기본 문법

if (조건1) {
    if (조건2) {
        // 조건1과 조건2가 모두 참일 때 실행
    }
}

이 구조는 "조건1이 참인 경우에만 조건2를 평가"하게 되므로, 조건 간 종속 관계를 표현할 때 유용해요.

💻 실습 예제

int age = 20;
boolean hasTicket = true;

if (age >= 18) {
    if (hasTicket) {
        System.out.println("입장 가능합니다.");
    }
}

위 예제는 나이가 18세 이상이고, 동시에 티켓이 있어야만 "입장 가능합니다."가 출력돼요. 조건 간 종속성을 표현할 때 중첩 if 문은 좋은 도구가 될 수 있어요.

⚠️ 중첩 if 문 주의사항

  • 중첩이 깊어질수록 코드 가독성이 떨어지므로 2~3단계 이상은 피하기
  • if ~ else if로 대체 가능한 경우 중첩 대신 평면 구조 사용 권장
  • 중괄호 {} 생략은 절대 금지! 버그 발생 원인이 됨

💡 구조 개선 예시

// 중첩 대신 논리 연산자로 조건 간소화
if (age >= 18 && hasTicket) {
    System.out.println("입장 가능합니다.");
}

이렇게 논리 연산자를 활용하면 중첩 없이도 간단하고 읽기 쉬운 코드로 개선할 수 있어요. 꼭 필요한 경우가 아니라면 중첩은 줄이는 게 좋아요.

5. switch 문 개념과 사용법 🎛️

조건이 많을 때 if ~ else if 문을 사용하면 코드가 길어지고 읽기 어려워요. 이런 상황에서 switch 문을 사용하면 가독성이 훨씬 좋아지고 명확한 분기 구조를 만들 수 있어요.

📌 기본 문법

switch (변수) {
    case 값1:
        // 값1일 때 실행할 코드
        break;
    case 값2:
        // 값2일 때 실행할 코드
        break;
    default:
        // 어떤 case에도 해당하지 않을 때 실행
}

switch 문은 특정 변수의 값에 따라 분기를 나누는 구조예요. case별로 코드를 작성하고, break를 사용해 분기 처리를 끝내요.

💻 실습 예제

int day = 3;

switch (day) {
    case 1:
        System.out.println("월요일입니다.");
        break;
    case 2:
        System.out.println("화요일입니다.");
        break;
    case 3:
        System.out.println("수요일입니다.");
        break;
    default:
        System.out.println("기타 요일입니다.");
}

day가 3이므로 "수요일입니다."가 출력됩니다. break가 없으면 다음 case로 흘러가게 되니, 잊지 말고 꼭 break 쓰기!

🧠 switch 문 특징

  • byte, short, int, char, String 등 사용 가능
  • double, float, boolean은 사용 불가!
  • default는 모든 case가 실패했을 때 실행됨

📊 비교: switch vs else if

기준 switch 문 if ~ else if 문
가독성 case가 명확히 구분됨 조건이 복잡할 경우 적합
지원 타입 int, char, String 등 일부만 모든 타입과 조건식 지원
유연성 정해진 값 비교에 적합 복잡한 조건, 논리식 사용 가능

switch 문은 단순한 값 비교에 특히 강력하고, 코드를 짧고 명확하게 만들 수 있어요. 하지만 복잡한 조건에는 if 문이 더 유연하답니다.

6. switch 문과 if 문 선택 기준 🎯

조건문을 사용할 때 항상 고민되는 것 중 하나! 과연 if 문을 쓸까, switch 문이 더 좋을까? 이 두 문법은 비슷한 역할을 하지만 각각의 특성과 용도에 따라 선택해야 해요. 자바에서는 다음과 같은 기준으로 구분하면 좋아요.

📌 선택 기준 요약

조건문 유형 사용하면 좋은 경우 주의사항
if 참/거짓 여부 판단, 복잡한 조건식 사용 분기가 많으면 코드 길어짐
if ~ else 두 가지 경우로 나눌 때 else의 순서에 주의
if ~ else if ~ else 3개 이상의 조건 분기 시 가독성 저하 주의
switch 값이 명확히 정해져 있을 때 (예: 요일, 메뉴 선택 등) 사용 가능한 데이터 타입에 제한 있음

🧠 실전에서는 이렇게 선택하세요!

  • 복잡한 조건을 다룰 땐 if 문을 사용하세요. 논리식, 범위 비교 등에 유리합니다.
  • 단순한 선택지(숫자, 문자, 문자열 등)가 여러 개라면 switch 문이 더 깔끔합니다.
  • 성능 차이는 크지 않지만, 가독성과 유지보수를 기준으로 판단하세요.

결론적으로, 두 조건문 모두 상황에 따라 강력한 도구입니다. 중요한 건 코드의 명확성과 가독성이에요. 그래서 복잡한 조건에는 if, 단순한 선택에는 switch를 쓰는 게 자바 개발자들의 기본 원칙이라고 할 수 있죠!

🔚 마무리하며

이번 글에서는 자바의 조건 분기문에 대해 처음부터 끝까지 정리해보았어요. if 문을 시작으로 else, else if, 중첩 if, 그리고 switch 문까지 — 흐름 제어의 모든 핵심을 하나하나 직접 예제로 익혀봤죠. 조건문은 자바에서 정말 기초 중의 기초이면서도 실전에서 계속 쓰이게 되는 문법입니다.

이제 여러분은 상황에 따라 if를 쓸지 switch를 쓸지 판단할 수 있고, 코드의 흐름을 자유롭게 설계할 수 있는 수준까지 도달하셨어요. 앞으로 자바로 더 복잡한 프로그램을 짤 때도, 오늘 배운 조건문이 가장 먼저 머릿속에 떠오를 거예요. 👏👏👏

다음 글에서는 반복문 (for, while)을 활용해서 어떻게 프로그램 흐름을 반복시키는지 알아볼 거예요. 반복문까지 익히면 진짜 '제어문 마스터'라고 할 수 있답니다!

반응형

+ Recent posts