간단 자바 조건문 질문입니다.

조회수 281회

import java.util.Scanner;
public class test {


    public static void main(String[] arg) 
    {
        Scanner scan = new Scanner(System.in);

        System.out.println("정수 입력: ");
        int num = scan.nextInt();

        if(num%3==0)
            System.out.println(num + "는(은) 3의 배수입니다.");
        if(num%5==0)
            System.out.println(num + "는(은) 5의 배수입니다.");
        if(num%7==0)
            System.out.println(num + "는(은) 7의 배수입니다.");
        if(num%9==0)
            System.out.println(num + "는(은) 9의 배수입니다.");

        else {
            System.out.println("배수가 없다.");
        }

    }

}

이미지

조건을 만족하는 입력 값을 넣었을 때도 예외 사항 문구가 출력 되는데,

이 문구를 어떻게 배제 시키고 출력 시킬 수 있을까요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    안녕하세요.

    본문 코드의 의도는 위쪽의 if문을 모두 거치고, 해당 사항이 하나도 없을 때 else를 실행하도록 하는 것 같습니다. 하지만 if문은 그렇게 작동하지 않아요.

    else는 직전의 if 혹은 이전의 if~if else 문들과만 연결됩니다.

    if (...)
    else if (...)
    else if (...)
    else
    

    위와 같은 코드가 이상적인 연쇄 조건의 모습입니다.

    if (...) // first
    if (...) // second
    if (...) // third
    else // third-else
    

    이러한 방식으로 조건문을 연계하면 물론 if 안쪽의 구문은 조건이 맞을 때에만 실행되게 됩니다. 하지만 마지막을 제외한 모든 ifelse와 관련 없는 별개의 조건이 됩니다.

    else는 그 위가 어떻게 실행되었든, 자기와 연결된 바로 위의 if가 거짓이기만 하면 실행되는거죠.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)