입력한 parameter가 Odd Number 이면 true 그렇지 않으면 false
1
2
3
|
public static boolean isOdd(int i) {
return i % 2 == 1;
}
|
- 위 isOdd 함수는 음수가 입력 될 경우 false를 리턴 하는 오류가 있다.
- 오직 양의 정수에서만 정상동작 한다.
해결 1 ////////////////////////////////////
// Java Puzzler Solution
// DESC: Use Integer Only
// Java Puzzler Solution
// DESC: Use Integer Only
public static boolean isOdd_Sol_1(int i) {
return i % 2 != 0;
}
- Integer 입력만 동작한다. float이 입력될 경우 정상 동작하지 않는다.
- 속도가 느리다.
해결 2
////////////////////////////////////
// Java Puzzler Solution
// DESC: Use Performance Critical Setting
public static boolean isOdd_Sol_2(int i) {
return (i & 1) != 0;
}
- 속도가 original operator 처럼 빠르다.
- float 입력의 경우에도 정상 동작이 가능하다.
테스트 소스코드
package chapter1.puzzle;
return i % 2 != 0;
}
- Integer 입력만 동작한다. float이 입력될 경우 정상 동작하지 않는다.
- 속도가 느리다.
해결 2
////////////////////////////////////
// Java Puzzler Solution
// DESC: Use Performance Critical Setting
public static boolean isOdd_Sol_2(int i) {
return (i & 1) != 0;
}
- 속도가 original operator 처럼 빠르다.
- float 입력의 경우에도 정상 동작이 가능하다.
테스트 소스코드
package chapter1.puzzle;
public class Puzzle1 {
public static boolean isOdd(int i) {
return i % 2 == 1;
}
public static boolean isOdd(int i) {
return i % 2 == 1;
}
public static boolean isOdd_Try(int i) {
return Math.abs(i) % 2 == 1;
}
return Math.abs(i) % 2 == 1;
}
////////////////////////////////////
// Java Puzzler Solution
// DESC: Use Integer Only
// Java Puzzler Solution
// DESC: Use Integer Only
public static boolean isOdd_Sol_1(int i) {
return i % 2 != 0;
}
return i % 2 != 0;
}
////////////////////////////////////
// Java Puzzler Solution
// DESC: Use Performance Critical Setting
public static boolean isOdd_Sol_2(int i) {
return (i & 1) != 0;
}
// Java Puzzler Solution
// DESC: Use Performance Critical Setting
public static boolean isOdd_Sol_2(int i) {
return (i & 1) != 0;
}
public static void main( String args[] )
{
int input = 1;
boolean bRes = Puzzle1.isOdd( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Try( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Sol_1( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Sol_2( input );
System.out.println( bRes );
}
}
[ 출처 : http://gggura.egloos.com/3453162 ]
{
int input = 1;
boolean bRes = Puzzle1.isOdd( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Try( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Sol_1( input );
System.out.println( bRes );
bRes = Puzzle1.isOdd_Sol_2( input );
System.out.println( bRes );
}
}
[ 출처 : http://gggura.egloos.com/3453162 ]
댓글 없음:
댓글 쓰기