CodeGym /행동 /JAVA 25 SELF /조건문: if else

조건문: if else

JAVA 25 SELF
레벨 3 , 레슨 1
사용 가능

1. if else 조건문

프로그램이 외부 상황이 어떻게 변하든 항상 똑같은 일을 한다면 쓸모가 크지 않을 것입니다. 프로그램은 다양한 상황에 맞춰 어떤 경우에는 이런 동작을, 다른 경우에는 다른 동작을 할 수 있어야 합니다.

Java에서는 이를 조건문ifelse라는 키워드를 통해 구현합니다. 조건의 참/거짓에 따라 서로 다른 명령 블록을 실행하도록 해 줍니다.

조건문은 세 부분으로 이루어집니다: 조건, 명령 1, 명령 2. 조건이 참이면 명령 1이 실행되고, 그렇지 않으면 명령 2가 실행됩니다. 두 명령이 동시에 실행되지는 않습니다. 일반적인 형태는 다음과 같습니다:


if (조건)
   명령1;
else
   명령2;
조건문 if-else

if는 “만약 ~라면”, else는 “그렇지 않으면”을 뜻합니다. 사람의 말로 쓰면 다음과 같습니다:


만약 조건이 참이라면
   명령1을 수행하라;
그렇지 않으면
   명령2를 수행하라;
조건문 if-else를 자연어로 표현

예시:

// 화면에는 다음 문구가 출력됩니다: 당신은 아직 어린이입니다

int age = 17;
if (age < 18)
   System.out.println("당신은 아직 어린이입니다");
else
   System.out.println("당신은 이미 성인입니다");
// 화면에는 다음 문구가 출력됩니다: 따뜻합니다

int temperature = 5;
if (temperature < 0)
   System.out.println("밖은 매우 춥습니다");
else
   System.out.println("따뜻합니다");
// 화면에는 다음 문구가 출력됩니다: 운전면허 시험을 볼 수 있습니다

int age = 18;
if (age == 18)
   System.out.println("운전면허 시험을 볼 수 있습니다");
else
   System.out.println("이제 차를 위해 저축할 수 있습니다");

2. 블록

조건이 참이거나 거짓일 때 여러 명령을 실행하고 싶다면, 이를 하나의 블록으로 묶을 수 있습니다.

명령들을 블록으로 묶으려면 중괄호로 감싸면 됩니다. 일반적인 형태는 다음과 같습니다:


{
   명령1;
   명령2;
   명령3;
}

블록 안의 명령 개수에는 제한이 없습니다. 심지어 0개도 가능합니다.

if-else와 블록을 함께 사용하는 예:

// 화면에는 다음 문구가 출력됩니다: 너는 아직 어린이야. 어른들과 말다툼하지 마

int age = 17;
if (age < 18)
{
   System.out.println("너는 아직 어린이야");
   System.out.println("어른들과 말다툼하지 마");
}
else
{
   System.out.println("당신은 이미 성인입니다");
   System.out.println("요즘 젊은이들 참...");
}
// 화면에는 다음 문구가 출력됩니다: 따뜻합니다

int temperature = 5;
if (temperature < 0)
{
   System.out.println("밖은 매우 춥습니다");
   System.out.println("모자를 쓰세요");
}
else
   System.out.println("따뜻합니다");
// 빈 블록이 실행됩니다. 화면에는 아무 것도 출력되지 않습니다. 

int age = 21;
if (age == 18)
   System.out.println("운전면허를 받을 수 있습니다");
else
{
}

3. if 구문의 축약 문법

else 블록의 코드가 없다면 생략할 수 있습니다. 그러면 if 구문은 다음과 같은 형태가 됩니다:


if (조건)
{
    명령1;
}
조건문 if

예:

int age = 19;
if (age >= 18)
{
    System.out.println("당신은 성인입니다!");
}

어떻게 작동하나요?

조건이 참이면 블록의 코드가 실행됩니다. 거짓이면 아무 일도 일어나지 않고 — 프로그램은 다음으로 진행합니다.

프로그램에 else 블록이 있더라도, 그 블록이 비어 있다면(중괄호 사이에 아무 명령도 없다면) 그냥 없애도 됩니다. 프로그램 동작은 달라지지 않습니다.

4. 조건 결합: else if

가끔은 단순히 “예/아니오”가 아니라 여러 선택지 중에서 하나를 골라야 합니다. 이럴 때 else if 조합이 도움이 됩니다:

if (uslovie1)
{
    // uslovie1이 참인 경우 실행됨
}
else if (uslovie2)
{
    // uslovie2가 참이고, uslovie1이 거짓인 경우 실행됨
}
else
{
    // 위 조건들 중 어느 것도 해당하지 않을 때 실행됨
}

예:

int hour = 13;
if (hour < 12)
{
    System.out.println("좋은 아침입니다!");
}
else if (hour < 18)
{
    System.out.println("좋은 오후입니다!");
}
else
{
    System.out.println("좋은 저녁입니다!");
}

무슨 일이 일어나나요?

  • 12시 이전이면 — 아침입니다.
  • 12시부터 18시까지면 — 낮입니다.
  • 그 이후면 — 저녁입니다.
  • 프로그램은 하나의 선택지만 고릅니다! 어떤 조건이 만족되면 — 나머지는 아예 검사하지 않습니다.

5. 도식적 일러스트: 분기 흐름도

흐름도로 보면 다음과 같습니다:

조건이 여러 개라면:

이건 테이블탑 롤플레잉 게임의 갈림길과 아주 비슷합니다: 왼쪽으로 가면 — 한 가지, 오른쪽으로 가면 — 또 다른 것, 직진하면 — 또 다른 무언가!

6. 어떤 조건을 검사할 수 있을까?

if 뒤의 괄호 안에는 결과가 true 또는 false가 되는 논리 표현식이 들어가야 합니다.

주요 비교 연산자:

연산자 의미 예시
==
같다
x == 5
!=
같지 않다
x != 10
>
크다
x > 0
<
작다
age < 18
>=
크거나 같다
score >= 100
<=
작거나 같다
count <= 50

조건 예시:

if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)

주의하세요: =(하나)은 대입입니다. ==(두 개)는 비교입니다. 이는 초보자가 가장 많이 하는 실수 중 하나입니다! 만약 실수로 다음과 같이 쓴다면:

if (x = 5) // 오류!

— 컴파일러가 혼내줄 것이고, 매우 잘하는 일입니다.

7. 조건에서 문자열 다루기

Java에서 == 비교는 숫자에 대해서는 올바르게 동작합니다. 부동소수점 숫자는 ==로 비교하지 않는 것이 좋고, 문자열은 ==로 비교하면 안 됩니다 — 문자열은 문자열의 내용을 비교하는 equals() 메서드를 사용하세요(참조가 아니라 내용을 비교합니다).

문자열 비교의 미묘한 점들은 나중에 더 자세히 이야기하겠습니다. 올바른 비교 방법은 아래 예시처럼 하면 됩니다:

String password = console.nextLine();
if (password.equals("qwerty"))            // equals() 메서드를 호출하고 두 번째 문자열을 인수로 전달합니다
{
    System.out.println("입장하셨습니다!");
}

8. 특징과 주의점:

중괄호: 꼭 필요할까?

if 또는 else 뒤에 한 줄짜리 명령만 있다면, 중괄호를 생략할 수 있습니다:

if (age > 18)
    System.out.println("당신은 18세를 넘었습니다!");

// 하지만 항상 괄호를 쓰는 것이 더 안전합니다:
if (age > 18)
{
    System.out.println("당신은 18세를 넘었습니다!");
}

팁: 항상 중괄호를 쓰세요. 특히 코드를 확장할 때 수많은 오류를 예방할 수 있습니다.

논리 오류: 조건을 조심하세요!

다음을 이렇게 작성하면:

if (age > 18)
    System.out.println("당신은 18세를 넘었습니다!");
    System.out.println("환영합니다!");

컴파일러는 이 코드를 이렇게 해석합니다:

if (age > 18)
{
    System.out.println("당신은 18세를 넘었습니다!");
}

System.out.println("환영합니다!");

두 번째 줄은 항상 실행됩니다 — 두 줄 모두를 같은 “분기” 안에 넣으려면 중괄호가 필요합니다.

1
과제
JAVA 25 SELF, 레벨 3, 레슨 1
잠금
영화 티켓 구매 🎬
영화 티켓 구매 🎬
1
과제
JAVA 25 SELF, 레벨 3, 레슨 1
잠금
야외 날씨 확인 ❄️
야외 날씨 확인 ❄️
1
과제
JAVA 25 SELF, 레벨 3, 레슨 1
잠금
계정 잠금 해제 🔒
계정 잠금 해제 🔒
1
과제
JAVA 25 SELF, 레벨 3, 레슨 1
잠금
시간대별 인사 ☀️
시간대별 인사 ☀️
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION