• Conditional(조건문)

    2021. 4. 30.

    by. 와트

    if 조건문이랑 switch 조건문 정리.

    if는 생활코딩 강의에서 접한 적 있는데, switch는 처음 들어봤다. 중첩 조건문 사용도 익숙해지면 유용하게 사용이 가능할 것 같은데 아직은 완전히 내 것으로 만들진 못한 듯.

    - if(조건){결과}

    - if(조건1){결과1}
    else(조건2){결과2}

    - if(조건1){결과1}
    else if(조건2){결과2}
    else(조건3){결과3}

    - switch(연산자) {
    case "조건1" : 결과1 break;
    case "조건2" : 결과2 break;
    default : 결과3 break; }

     

    ※문제. 정수 두 개를 입력 받아 정수가 모두 짝수인지, 홀수인지, 하나는 홀수이고 하나는 짝수인지 출력하는 값을 만드시오.

    앞선 문제와 동일한 것을 조건문을 이용해 좀 더 다양하게 표현이 가능하다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        public void method1() {
            Scanner sc = new Scanner(System.in);
            System.out.println("첫 번째 정수 입력: ");
            int num1 = sc.nextInt();
            System.out.println("두 번째 정수 입력: ");
            int num2 = sc.nextInt();
            String result = "";
            
            if(num1%2==0 && num2%2==0) {
                result = "두 수 모두 짝수이다";
            }
            else if(num1%2==0 || num2%2==0) {
                result = "하나는 홀수이고 하나는 짝수이다";
            }
            else {
                result = "두 수 모두 홀수이다";
            }
            System.out.println(result);
        }
    cs

    result를 이미 string으로 명명해놓아서 result값을 재정의하고 나중에만 print하면 깔끔한데, 나는 result값을 만들어 놓지 않고 출력만 하려고 하다보니 코드가 더러웠다.

    깔끔하고 직관적인 코드. 계속 주의해야지.

     

    ※문제. 정수 두 개와 연산기호 하나를 입력받아 해당 연산의 결괏값을 출력하는 코드를 만드시오. (단, 0으로 나누는 경우는 "0으로 나눌 수 없습니다"라는 답 출력하도록 하고, 잘못된 기호 입력 시 "입력하신 연산은 없습니다. 프로그램을 종료합니다"라는 답을 출력하도록 함.)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public void method2() {
            
            Scanner sc = new Scanner(System.in);
            System.out.print("첫 번째 정수 입력: ");
            int num1 = sc.nextInt();
            System.out.print("두 번째 정수 입력: ");
            int num2 = sc.nextInt();
            System.out.print("연산기호 입력: ");
            char op = sc.next().charAt(0);
     
            int result = 0;
            
            switch(op){
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1*num2;
                    break;
                case '%':
                    result = num1%num2;
                    break;
                case '/':
                    if(num2 !=0) {
                        result = num1/num2;
                    }else {
                        System.out.println("0으로 나눌 수 없습니다.");
                    }
                    break;
                default:
                    System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
                    return;
            }
            System.out.println("연산 수행 결과 : " + result);    
        }
    cs

    조건이 우수수 나오는데 뭐부터 해야할지 몰라서 엄청 헤맸다. 중첩 조건문을 사용해야 하는 문제인데 switch와 if를 중첩으로 사용하면 보다 깔끔하고 간단한 코드가 나온다.

    switch로 연산자를 받고 이에 따른 결괏값을 출력하되, 나누기 기호의 경우는 if문으로 두 번째 받은 정수가 0일 때와 아닐 때의 경우로 나눈다. 이때도 마찬가지로 result값을 미리 정의하고 코드를 적는 것이 훨씬 깔끔하다.

    '혼자 있는 방 > Java' 카테고리의 다른 글

    Repetitive(반복문) 2  (0) 2021.05.02
    Repetitive(반복문) 1  (0) 2021.04.30
    Operator(연산자)  (0) 2021.04.28
    변수(Variable)  (0) 2021.04.24
    Java 독학 시작  (0) 2021.04.24

    댓글

Designed by Nana