이것 아니면 저것. if ~ else 문

티스토리 메뉴 펼치기 댓글수0

Dev Center/JAVA start

이것 아니면 저것. if ~ else 문

seanhigher
댓글수0
프로그램의 로직을 기본적으로 결정짓는 것은 무엇일까? 아마 if ~ else 가 아닐까 싶다. if ~ else 는 어떠한 상황을 마주쳤을때, 그 상황에서 어떻게 해야 할것인가에 대해 알려주게 된다. 마치 여러개의 질문을 거쳐서 답을 찾아가는 스무고개와 같이...


if 문의 기본적인 형태.
if 의 기본적인 형태는 다음과 같이 쓸 수 있다.

if(비교식) {
    수행문;
}

비교식을 확인하고 그것이 참의 값을 갖게 될 경우 수행문을 수행하는 것이다. 그렇기 때문에 비교식에는 항상 참과, 거짓을 나타내는 boolen 타입의 결과갑 만을 갖을 수 있게 된다. 물론 수행문에는 어떤 것이 와도 상관이 없다. 만약 숫자 1이 10 보다 크다 라는 '10>1' 비교식을 가지고 있을때, 다음과 같은 문장을 만들 수 있다.

if(1 > 10) {
    System.out.println("10 이 1 보다 크다');
}


if ~ else 문.
만일 비교식이 거짓의 값을 갖게 될때도 무언가를 실행해야 한다면 어떻게 해야 할까? 이럴땐 if ~ else 문을 사용하여 if 문을 확장하여 사용하는 것이 가능하다. else 문은 말 그대로 if 가 아닐 경우를 포함하는 것이다.

if(1 > 10) {
    System.out.println("10 이 1 보다 크다");
} else {
    System.out.println("10 이 1 보다 크지 않다.");

한가지 비교식을 가지고 그것이 참일 경우 그렇지 않을 경우 모두의 경우에 대해서 적절한 행동이 가능한 것이다. 그럼 이런 경우는 어떻게 해야 할까?

if ~ else if 문.
숫자의 범위에 따라 적당한 등급을 주고 싶다면... 여러개의 if 문을 사용해서 표현이 가능할 것이다.

if(n > 9) {
    System.out.println("A 등급);
}
if(n > 7) {
    System.out.println("B 등급");
}
if(n > 5) {
    System.out.println('C 등급");
}

하지만, 한가지 문제가 발생하게 된다. 만일 n 이라는 변수가 8의 값을 가지고 있다면, 두번째 비교문과 세번째 비교문을 만족하기 때문에 원했던 "B 등급" 이 아니라 "B 등급 C 등급" 이 함께 출력될 것이다. 한가지 비교가 이루어진 후에는 다른 비교가 이루어지지 않도록 비교문을 하나로 묶어주는 것이 else if 문이다. 앞서 if 문의 결과가 옯지 않을 경우에만 다음의 if 문을 실행하는 것이다.

if(n > 9) {
    System.out.println("A 등급);
} else if(n > 7) {
    System.out.println("B 등급");
} else if(n > 5) {
    System.out.println('C 등급");
}

위와 같이 프로그램을 작성하게 된다면 원했던 "B 등급" 의 답만을 얻을 수 있을 것이다.

맨위로