Notice
Recent Posts
Recent Comments
준호씨의 블로그
java - 홀수, 짝수 구분하기. check even, odd number 본문
반응형
나머지 연산자 (%) 를 이용해서 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;
}
더 코드를 개선을 하려면?
더 코드를 개선 하려면 어떻게 하면 좋을까? 범용성을 높이려면 클래스를 분리 하면 될 거 같다. 자세한 설명은 생략 한다.
반응형
'개발이야기' 카테고리의 다른 글
C - 기존 Makefile 프로젝트를 CMake 로 컨버팅 하기. 그리고 CLion (0) | 2018.07.31 |
---|---|
osx - brew 로 mysql 5.7 설치 (0) | 2018.07.19 |
perl - template toolkit (tt) 반복문 (0) | 2018.07.16 |
javascript - date yyyymmdd, hhmmss, yyyymmddhhmmss, yyyymmddhhmm (0) | 2018.07.11 |
perl - sort hash. by key, by value. hash 정렬하기. (0) | 2018.07.10 |
Comments