자바 해 혹 의 판단 이 이렇게 어 려 운 가?

1689 단어 자바
만약 입력 값 의 패 리 티 를 판단 하 는 함수 가 필요 하 다 면 어떻게 하 시 겠 습 니까?
이렇게?
public boolean isOdd(int i) {

    return i % 2 == 1;

}

아니면 이렇게?
public boolean isOdd(int i) {

    return i % 2 != 0;

}

유 감 스 럽 지만 첫 번 째 방식 은 4 분 의 1 이 틀 릴 수 있 습 니 다. 이것 은 자바 가 모델 링 기호 에 대한 정의 와 관련 이 있 습 니 다.
(a / b) * b + a %b = a;

상기 등식 의 성립 을 확보 하기 위해 a 가 마이너스 일 때 2 의 모델 링 은 마이너스 가 될 것 이다. 예 를 들 어:
(-3 / 2)  + (-3 % 2) = -3

이때 의 - 3% 2 는 - 1 이 되 기 때문에 처음에 함수 가 잘못 되 었 습 니 다.
그리고 두 번 째 는 약간 비효 율 적 이 고 더 좋 은 방법 은:
public boolean isOdd(int i) {

    return i & 1;

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
사실 자바 에서% 연산 을 사용 할 때 예상 치 못 한 결 과 를 초래 할 수 있 습 니 다.
3 % 2 = 1;
-3 % 2 = -1;
3 % -2 = 1;
-3 % -2 = -1;
이상 의 결과 경험 증 은 틀림 이 없다.

좋은 웹페이지 즐겨찾기