Media Log


1. if~else문


오늘 배우게될 if, else문은 조건문에 사용되는 유용한 키워드들입니다. 특정 조건을 만족시킬때 어떠한 문장을 실행시키고 싶다면 바로 if~else문을 쓰시면 간단히 처리할 수 있습니다. 기본적으로 if~else문은 다음과 같은 기본 구성을 지닙니다.


if (조건식) {

조건식이 참일 경우 실행되는 문장

} else {

조건식이 거짓일 경우 실행되는 문장

}


여기서 조건식에는 보통 true 또는 false를 반환하는 연산문이 쓰입니다. 예를들어 관계 연산자라던가 논리 연산자 등이 많이 쓰입니다. 다음의 예를 통해 if~else문을 간략히 설명하도록 하겠습니다.


class Condition

{

public static void main(String[] args)

{

int num = 60;


if (num > 50)

System.out.println("num은 50보다 큽니다.");

else

System.out.println("num은 50보다 크지 않습니다.");

}

}


결과:

num은 50보다 큽니다.


7~10행을 보시면 if~else문이 쓰인것을 확인하실 수 있습니다. 7행의 조건식에 관계 연산자가 쓰였습니다. num의 값이 60이므로 50보다 크기때문에 true를 반환하고, 조건식이 참이 되기 때문에 if문 안의 문장을 실행합니다. 만약에 num 값이 50보다 낮았다면 else문 안의 문장이 실행됬을 것입니다.


참고로 if~else문을 쓸때 실행되는 문장이 하나만 있을 경우에 중괄호를 생략할 수가 있습니다. 


if (num > 50) {

System.out.println("num은 50보다 큽니다.");

else {

System.out.println("num은 50보다 크지 않습니다.");

}


중괄호의 생략:

if (num > 50)

System.out.println("num은 50보다 큽니다.");

else

System.out.println("num은 50보다 크지 않습니다.");


하지만 아래의 경우는 중괄호를 생략하면 안됩니다.

if (num > 50) {

System.out.println("num은 50보다 큽니다.");

System.out.println("num은 50보다 작지 않습니다.");

} else {

System.out.println("num은 50보다 작습니다.");

System.out.println("num은 50보다 크지 않습니다.");

}


만약 생략해버린다면 에러를 출력하거나 엉뚱한 결과를 출력하고 맙니다.


2. if~else문의 중첩


if~else문은 중첩, 즉 if~else문 내에 if문이나 if~else문을 삽입할 수 있습니다. 아래와 같이 말입니다.


class Condition

{

public static void main(String[] args)

{

int num = 80;


if (num < 50)

System.out.println("num은 50보다 작습니다.");

else {

if (num > 60)

System.out.println("num은 60보다 큽니다.");

else

System.out.println("num은 50보다는 크고 60보다 작습니다.");

}

}

}


결과:

num은 60보다 큽니다.


자세히 살펴보면, 9행의 else문 내에 또 한번의 if~else문이 삽입된것이 보이시죠? 이것이 바로 if~else문의 중첩입니다(여러번 중첩이 가능합니다). 변수 num의 값은 80이므로 7행의 조건식을 만족하지 못하고 else문으로 넘어옵니다. 그런데 여기서 다시 한번의 비교를 거치게 되는데 10행에서 num의 값은 60보다 크므로 "num은 60보다 큽니다"라는 문자열을 출력하고 중괄호를 빠져나옵니다. 간단하죠?


3. else if문


여러가지 조건에 따라 실행되는 문장이 제각각일 경우에 else if문을 사용합니다. 물론 중첩으로 해결이 가능하나, 조건식이 많을 경우에는 과도한 중첩으로 인해 코드가 복잡해보이게 됩니다. else if문은 if와 else 사이에 쓰이기도 하나 else가 없을 경우에는 if 아래서 사용됩니다. 기본적인 구조는 아래와 같습니다.


if (조건식) {

조건이 참일때 실행되는 문장

} else if (조건식) {

위의 조건식을 만족하지 못하고 이 조건식을 만족한다면 실행되는 문장

} else {

위의 조건들이 모두 거짓일때 실행되는 문장

}


바로 직접 사용해보도록 하겠습니다.


class Condition

{

public static void main(String[] args)

{

int num = 80;


if (num < 50)

System.out.println("num은 50보다 작습니다.");

else if (num > 60)

System.out.println("num은 60보다 큽니다.");

else

System.out.println("num은 50보다 크고 60보다 작습니다.");

}

}


결과:

num은 60보다 큽니다.


코드로 돌아가 변수 num의 값이 80, 7행에서 50보다 크므로 아래의 else if문으로 넘어갑니다. 이번에는 80이 60보다 크다는 조건을 만족하여 else if문 내의 문장을 실행하고 빠져나옵니다. 위의 예제처럼 else if문은 상황에 따라 하나만 쓰일 수 있지만 여러번 사용이 가능하다는 것을 알아두시기 바랍니다.

'프로그래밍 관련 > 자바/자바 스크립트' 카테고리의 다른 글

JAVA 강좌 10편. 반복문 (1)  (5) 2012.07.31
JAVA 강좌 9편. 제어문 (2)  (19) 2012.07.30
JAVA 강좌 8편. 제어문 (1)  (15) 2012.07.30
JAVA 강좌 7편. 연산자 (2)  (25) 2012.07.25
JAVA 강좌 6편. 연산자 (1)  (18) 2012.07.25
JAVA 강좌 5편. 주석  (13) 2012.07.22
  1. 간큰넘 at 2012.08.17 09:43 신고 [edit/del]

    제가 아직 컴파일러를 안깔어서 그러는데...ㅋ

    if else 문에서 둘다 true로 넣어주면...if 문만 출력결과가 나오나요?

    아니면 에러가 뜨나요??? 담주부터는 컴파일러 깔어서 구현을 조금씩 해봐야겠어요.ㅋ

    Reply
    • BlogIcon EXYNOA at 2012.08.17 10:02 신고 [edit/del]

      else문에는 조건식이 올 수 없습니다.

      if문이 true라면 else는 알아서 false가 됩니다.

      만약에

      ..
      if (true) {
      ...
      } else {
      ...
      }

      이런 구조라면 if문의 조건식이 항상 참이기 때문에 if문만 실행됩니다.

  2. 오연수 at 2012.08.21 18:07 신고 [edit/del]

    좋은 강좌 감사합니다.

    Reply
  3. 김승현 at 2012.10.04 02:24 신고 [edit/del]

    감사합니다~

    Reply
  4. jinlak at 2013.04.26 18:12 신고 [edit/del]

    좋은 강좌 감사합니다.

    Reply
  5. 학생 at 2014.02.27 04:21 신고 [edit/del]

    질문있습니다! 조건문에 등호를 넣을 때마다 에러가 뜨는데 왜 그럴까요? ㅠ

    Reply
    • BlogIcon EXYNOA at 2014.02.27 18:24 신고 [edit/del]

      어떤 에러가 발생하는지 말씀해주시고, 에러가 발생하는 코드를 덧글에 게재해주시길 바랍니다.

    • 학생 at 2014.02.28 01:19 신고 [edit/del]

      type mismatch: cannot convert from int to boolean
      no suggestions available

      이렇게 뜹니다.

      public class newproject {

      public static void main(String[] args) {
      // TODO Auto-generated method stub
      int num20 = 20;
      if (num20 = 20) <-에러문장
      System.out.println("num20 is 20");
      }

      }
      전체 명령문은 이렇구요..ㅠ

    • BlogIcon EXYNOA at 2014.02.28 02:24 신고 [edit/del]

      조건식에는 참, 거짓과 같은 논리 데이터가 와야만 합니다. 그런데 저기서는, num20에 20이란 값을 대입하라는 대입 연산자가 사용되어 최종적으로는 num20의 값이 조건식에 오는 상황이 되었습니다. 등호가 하나만 사용되면 이는 대입 연산자이며, 두개가 사용되어야 num20과 20이 같은 값인지 비교할 수 있게 됩니다.

      num20 == 20

    • 학생 at 2014.03.01 22:25 신고 [edit/del]

      감사합니다~!!

  6. 하하 at 2014.03.20 20:43 신고 [edit/del]

    전 강의때 개발도구가르쳐주셨는데 notepad 로 해도 별상관없을까요

    Reply
  7. 하크생 at 2014.05.10 20:28 신고 [edit/del]

    저기 저는 컴파일해서 출력을하면 한글을 사용할경우 오류를 뿜내요...ㅜ

    Reply
  8. 나볼나볼 at 2014.10.04 18:50 신고 [edit/del]

    감사합니다!
    저는 하는 도중에 else without if 오류가 떠서 헤맸었는데 if (num<50) 다음에 세미콜론 ; 를 붙였더군요.. 혹시 저처럼 오류 뜨시는분 참고하세요!

    Reply

submit

티스토리 툴바