8.3. Using Number Ranges

Problem

You need to define a range of acceptable values for a variable, and test to see if that variable is within those boundaries.

Solution

Use an implementation of Range, an interface that defines a simple numerical range. There are a number of different implementations for different types: NumberRange , DoubleRange , FloatRange , IntRange , and LongRange . The following example demonstrates the use of DoubleRange to verify that a variable is within a valid range. A DoubleRange is created with minimum and maximum values, and a value is tested by DoubleRange using a method named containsDouble( ) :

import org.apache.commons.lang.math.DoubleRange;
import org.apache.commons.lang.math.Range;

Range safeSpeed = new DoubleRange( 0.0, 65.0 );

double currentSpeed = getCurrentSpeed( );
if( !safeSpeed.containsDouble( currentSpeed ) ) {
    System.out.println( "Warning, current speed is unsafe." );
}

Discussion

Additionally, one can also test to see if another Range is contained within a Range, or if a Range overlaps another Range. The following example demonstrates the use of containsRange( ) to determine if a Range is entirely contained within another Range:

import org.apache.commons.lang.math.Range; import org.apache.commons.lang.math.IntRange; import org.apache.commons.lang.math.NumberUtils; double recordHigh = getRecordHigh( ); double recordLow = getRecordLow( ); IntRange recordRange = new IntRange( recordLow, recordHigh ); int todayTemp = getTodaysMaxTemp( ); ...

Get Jakarta Commons Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.