1. 개요
Java에서 Integer , Long , Float 및 Double 과 같은 유형으로 작업할 때 숫자가 양수인지 음수인지 확인하는 경우가 많습니다. 이것은 기본적이고 일반적인 숫자 연산입니다.
이 빠른 사용방법(예제)에서는 주어진 숫자가 양수인지 음수인지 확인하는 방법에 대해 설명합니다.
2. 문제 소개
숫자가 양수인지 음수인지 확인하는 것은 매우 간단한 문제입니다. 그러나 구현을 살펴보기 전에 긍정과 부정의 정의를 이해해 봅시다.
실수 n 이 주어지면 n 이 0보다 크면 양수입니다. 그렇지 않고 n 이 0보다 작으면 음수입니다. 그래서 우리는 여전히 특정한 경우를 가지고 있습니다: 0. 0은 양수도 음수도 아닙니다 .
따라서 다음 세 가지 가능성을 포함 하는 Enum 을 만들 수 있습니다 .
enum Result {
POSITIVE, NEGATIVE, ZERO
}
이 사용방법(예제)에서는 숫자가 양수, 음수 또는 0인지 확인하는 두 가지 방법을 다룹니다. 단순화를 위해 단위 테스트 어설션을 사용하여 결과를 확인합니다.
다음으로 작동하는 것을 봅시다.
3. ' < ' 및 ' > ' 연산자 사용
정의에 따라 숫자가 양수인지 음수인지는 0과 비교한 결과에 따라 다릅니다. 따라서 Java의 "보다 큼(>)" 및 "미만(<)" 연산자 를 사용 하여 문제를 해결할 수 있습니다 .
다음으로 Integer 유형을 예로 들어 검사를 수행하는 메서드를 생성해 보겠습니다.
static Result byOperator(Integer integer) {
if (integer > 0) {
return POSITIVE;
} else if (integer < 0) {
return NEGATIVE;
}
return ZERO;
}
위의 코드는 명확하게 설명합니다. 0과의 비교 결과에 따라 결과가 양수인지 음수인지 또는 0인지 결정합니다.
방법을 검증하기 위한 테스트를 만들어 봅시다.
assertEquals(POSITIVE, PositiveOrNegative.byOperator(42));
assertEquals(ZERO, PositiveOrNegative.byOperator(0));
assertEquals(NEGATIVE, PositiveOrNegative.byOperator(-700));
당연히 테스트를 실행하면 통과합니다.
물론 Integer 매개변수를 Long , Float 또는 Double 로 변경할 수 있는 경우에도 동일한 논리가 작동합니다 .
4. signum() 메서드 사용
< 및 > 연산자를 사용하여 숫자가 양수인지 음수인지 확인하는 방법을 살펴보았습니다. 또는 signum() 메서드를 사용하여 주어진 숫자의 부호를 얻을 수 있습니다.
Integer 및 Long 숫자의 경우 Integer.signum() 및 Long.signum() 메서드 를 호출할 수 있습니다 .
signum(n) 메서드는 n 이 음수, 0 또는 양수일 때 -1 , 0 및 1 을 반환합니다.
Integer 를 예로 들어 check 메서드를 생성해 보겠습니다 .
static Result bySignum(Integer integer) {
int result = Integer.signum(integer);
if (result == 1) {
return Result.POSITIVE;
} else if (result == -1) {
return Result.NEGATIVE;
}
return Result.ZERO;
}
아래 테스트는 우리의 방법이 예상대로 작동하는지 확인합니다.
assertEquals(POSITIVE, PositiveOrNegative.bySignum(42));
assertEquals(ZERO, PositiveOrNegative.bySignum(0));
assertEquals(NEGATIVE, PositiveOrNegative.bySignum(-700));
Integer 및 Long 과 달리 Float 및 Double 클래스는 signum() 메서드 를 제공하지 않습니다 . 그러나 Math.signum() 메서드는 매개 변수로 Float 및 Double 숫자를 허용 합니다 . 예를 들면 다음과 같습니다.
static Result bySignum(Float floatNumber) {
float result = Math.signum(floatNumber);
if (result.compareTo(1.0f) == 0) {
return Result.POSITIVE;
} else if (result.compareTo(-1.0f) == 0) {
return Result.NEGATIVE;
}
return Result.ZERO;
}
마지막으로 메서드가 float 숫자가 양수인지 음수인지 확인할 수 있는지 확인하는 테스트를 만들어 보겠습니다.
assertEquals(POSITIVE, PositiveOrNegative.bySignum(4.2f));
assertEquals(ZERO, PositiveOrNegative.bySignum(0f));
assertEquals(NEGATIVE, PositiveOrNegative.bySignum(-7.7f));
테스트를 실행하면 통과합니다.
5. 결론
이 기사에서는 주어진 숫자가 양수, 음수 또는 0인지 확인하는 두 가지 방법을 배웠습니다.
늘 그렇듯이 여기에 제시된 모든 코드 스니펫은 GitHub에서 사용할 수 있습니다.