준호씨의 블로그

java - 홀수, 짝수 구분하기. check even, odd number 본문

개발이야기

java - 홀수, 짝수 구분하기. check even, odd number

준호씨 2018. 7. 19. 21:29
반응형

나머지 연산자 (%) 를 이용해서 2로 나누어 떨어지는 나머지로 홀수와 짝수를 구분 할 수 있다. 2로 나누었을 때 나머지가 1이면 홀수, 0이면 짝수이다.

    private static void checkOddEven(int n) {
        if (n % 2 == 1) {
            System.out.println(n + " is odd");
        } else if (n % 2 == 0) {
            System.out.println(n + " is even");
        } else {
            System.out.println("never happen");
        }
    }

테스트 코드. 다음 세가지는 모두 0~9 까지 하나씩 테스트 하는 코드이다.

    public static void main(String[] args) {
        // old style
        for (int i = 0; i < 10; i++) {
            checkOddEven(i);
        }

        // foreach
        for (int n : new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}) {
            checkOddEven(n);
        }

        // stream
        IntStream.range(0, 10).forEach(n -> {
            checkOddEven(n);
        });
    }

코드 개선. 메서드 개선.

checkOddEven 함수 내부에서 출력을 하는 건 테스트 할 때는 좋지만 범용적으로 쓰기에는 좋지 않다. 메서드를 개선해 보겠다.

다음과 같이 만들고

    private static boolean isEven(int n) {
        if ((n % 2) == 0) {
            return true;
        } else {
            return false;
        }
    }

실제 사용 할 때는 다음과 같이 사용 하는 것이 좋다.

        if (isEven(-3)) {
            System.out.println("even");
        } else {
            System.out.println("odd");
        }

좀 더 간결하게 적으면 다음과 같다.

    private static boolean isEven(int n) {
        return (n % 2) == 0;
    }

속도를 끌어 올리고 싶다면 다음과 같이 비트 연산을 하면 된다. 다만 가독성은 좀 떨어진다.

    private static boolean isEven(int n) {
        return (n & 1) == 0;
    }

더 코드를 개선을 하려면?

더 코드를 개선 하려면 어떻게 하면 좋을까? 범용성을 높이려면 클래스를 분리 하면 될 거 같다. 자세한 설명은 생략 한다.

반응형
Comments