정수가 지정된 범위 내에 있는지 확인하는 방법
더 우아한 걸 바라면서
if (i>0 && i<100)
띄어쓰기를 추가할 수 있습니다.
if (i > 0 && i < 100)
commons lang을 사용하는 사용자의 경우 Range:
Range<Integer> myRange = Range.between(100, 500);
if (myRange.contains(200)){
// do something
}
참고 항목: Apache Commons 3.1 Range 구성 방법 <Integer > 오브젝트
생각합니다
if (0 < i && i < 100)
좀 더 우아한 것 같아요.수학 방정식 같은데
특별한 것을 찾고 있는 경우는, 다음과 같이 해 주세요.
Math.max(0, i) == Math.min(i, 100)
적어도 도서관은 사용합니다.
ValueRange range = java.time.temporal.ValueRange.of(minValue, maxValue);
range.isValidIntValue(x);
true
minValue <= x <= MaxValue
내 - ,, 위false
x < minValue
or or or openicle.x > maxValue
- 、 , 、 위 、 위 、 위 。
와께 use와 if
다음과 같이 합니다.
int value = 10;
if (ValueRange.of(0, 100).isValidIntValue(value)) {
System.out.println("Value is with in the Range.");
} else {
System.out.println("Value is out of the Range.");
}
hasTeen
method의 범위는 13(표준) ~19(표준)입니다.
import java.time.temporal.ValueRange;
public class TeenNumberChecker {
public static void main(String[] args) {
System.out.println(hasTeen(9, 99, 19));
System.out.println(hasTeen(23, 15, 42));
System.out.println(hasTeen(22, 23, 34));
}
public static boolean hasTeen(int firstNumber, int secondNumber, int thirdNumber) {
ValueRange range = ValueRange.of(13, 19);
System.out.println("*********Int validation Start ***********");
System.out.println(range.isIntValue());
System.out.println(range.isValidIntValue(firstNumber));
System.out.println(range.isValidIntValue(secondNumber));
System.out.println(range.isValidIntValue(thirdNumber));
System.out.println(range.isValidValue(thirdNumber));
System.out.println("**********Int validation End**************");
if (range.isValidIntValue(firstNumber) || range.isValidIntValue(secondNumber) || range.isValidIntValue(thirdNumber)) {
return true;
} else
return false;
}
}
산출량
true
는 range
true
는 range 의
false
of range all 。
이미 우아한 거리 비교 방법이라고 생각합니다. 이 에서는 모든 것을 추가 .&&
[cases . ]를 합니다.
따라서 추가 단위 테스트를 작성하지 않으려면 다음 방법 중 하나를 사용할 수 있습니다.
Java 8 스트림 사용:
if(IntStream.rangeClosed(0,100).boxed().collect(Collectors.toList()).contains(i))
수학 수업 사용:
if(Math.max(0, i) == Math.min(i, 100))
개인적으로 두 번째 접근방식을 권장합니다.확인할 수 있는 범위와 같은 크기의 배열을 작성하지 않기 때문입니다.
그게 왜 우아하지 않은지 모르겠지만, 만약 자주 그 표현을 반복한다면, 예를 들어, 그것을 수법에 넣는 것이 좋습니다.
class MathUtil
{
public static boolean betweenExclusive(int x, int min, int max)
{
return x>min && x<max;
}
}
특히 배타적 비교와 포괄적 비교가 혼재되어 있는 경우에는 더욱 그렇습니다.메서드명은 <=를 사용해야 할 때 <<>를 사용하는 등 오타를 방지하는 데 도움이 됩니다.이 방법은 최소 < max 등에도 대응할 수 있습니다.
더 독창적인 걸 찾고 있다면
if (i > 0 && i < 100)
이거 드셔보세요
import static java.lang.Integer.compare;
...
if(compare(i, 0) > compare(i, 100))
그러나 범용 클래스이기 때문에 좋은 코드를 얻을 수 없습니다.다음과 같이 입력해야 합니다.
if (new Range<Integer>(0, 100).contains(i))
또는 (먼저 실장하는 것이 좋다):
class IntRange extends Range<Integer>
....
if (new IntRange(0,100).contains(i))
의미론적으로 둘 다 Java가 기본적으로 제공하는 것보다 IMHO가 더 좋지만 메모리 오버헤드, 성능 저하 및 전체 타이핑이 더 많은 것은 충분히 가치가 있습니다.개인적으로 저는 MDMA의 접근 방식이 더 좋습니다.
if ( 0 < i && i < 100)
if ( 'a' <= c && c <= 'z' )
Google의 Java Library Guava도 Range를 구현합니다.
import com.google.common.collect.Range;
Range<Integer> open = Range.open(1, 5);
System.out.println(open.contains(1)); // false
System.out.println(open.contains(3)); // true
System.out.println(open.contains(5)); // false
Range<Integer> closed = Range.closed(1, 5);
System.out.println(closed.contains(1)); // true
System.out.println(closed.contains(3)); // true
System.out.println(closed.contains(5)); // true
Range<Integer> openClosed = Range.openClosed(1, 5);
System.out.println(openClosed.contains(1)); // false
System.out.println(openClosed.contains(3)); // true
System.out.println(openClosed.contains(5)); // true
if(i <= 0 | i > = 100)
그건 작동할 것이다.
정수가 범위 내에 있는지 확인하는 방법입니다.하한보다 크고 상한보다 작습니다.뺄셈을 잘하려고 하는 것은 당신이 원하는 대로 되지 않을 것이다.
다음 코드 사용:
if (lowerBound <= val && val < upperBound)
or
if (lowerBound <= val && val <= upperBound)
스프링 데이터를 사용하는 경우 스프링의 Range 객체를 사용할 수도 있습니다.
range = new org.springframework.data.domain.Range(3, 8);
range.contains(5) // will return true.
2CT만
// Exclusive
public boolean isOrdered(int n1, int n2, int n3) {
return n1 < n2 && n2 < n3 ;
}
1부터 99까지 중 하나라는 것을 알 수식하다
if (isOrdered(0,i,100))
시험:
if (i>0 && i<100) {}
적어도 동작합니다;)
숫자가 2의 보완 형식으로 저장되어 있다고 확신하는 경우:
return ((x-low) <= (high-low));
보다 일반적이고 안전한 솔루션은 다음과 같습니다.
return ((x-high)*(x-low) <= 0);
Range<Long> timeRange = Range.create(model.getFrom(), model.getTo());
if(timeRange.contains(systemtime)){
Toast.makeText(context, "green!!", Toast.LENGTH_SHORT).show();
}
if (i in 0..100) {}
효율적인 코드를 위해 이것을 시험해 보세요;)
이 값이 다음과 같은지 여부를 테스트하는 경우i
[0..100] 범위에 있으며 부울 결과를 원하는 경우
i >= 0 && i < 100
괜찮아, 너에게 줄 거야.true
또는false
값이 범위를 벗어나면 예외를 발생시킬 수 있는 경우 내장된 checkIndex 메서드를 사용할 수 있습니다.
Objects.checkIndex(i, 100)
그것은 던져질 것이다.IndexOutOfBoundsException
범위를 벗어난 경우.물론 일반적인 솔루션은 아닙니다.또한 어레이 경계를 체크하기 위한 범위 체크가 이루어지는 컨텍스트가 있는 경우에만 더 예쁘지만 서드파티 라이브러리가 필요 없다는 장점이 있어 소규모 프로그램에 적합합니다.
전략을 시험해 보세요.단단해 보이네.
int num = 5;
//random values; can be changed
int a = 3;
int b = 7;
if (num >= 3 && num <= 7) {
//Your Code Here
}
언급URL : https://stackoverflow.com/questions/5574058/how-to-check-if-an-integer-is-in-a-given-range
'programing' 카테고리의 다른 글
GROUP_CONCAT 제한 있음 (0) | 2023.01.01 |
---|---|
"set Same Site cookie to none" 경고를 수정하는 방법 (0) | 2022.12.27 |
문자열에 특정 텍스트가 있는지 확인합니다. (0) | 2022.12.27 |
Vue.js에서는 컴포넌트를 Import한 후 내보낼 필요가 있는 이유는 무엇입니까? (0) | 2022.12.27 |
VueJs + Element로부터의 Webpack laze load 모듈UI (0) | 2022.12.27 |