programing

정수가 지정된 범위 내에 있는지 확인하는 방법

luckcodes 2022. 12. 27. 22:14

정수가 지정된 범위 내에 있는지 확인하는 방법

더 우아한 걸 바라면서

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);
  • trueminValue <= x <= MaxValue내 - ,, 위
  • falsex < 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.");
}

hasTeenmethod의 범위는 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