2012-06-10 10 views
5

A veces escribimos código innecesario. Mi pregunta es bastante simple: ¿hay algún método como el siguiente?Función de rango (mínimo, máximo, valor) en Java

/** @return true if a given value is inside the range. */ 
public static boolean range(min, max, value) 

No lo encontré en Google. ¿Es eso porque no existe?

+4

No lo nombre 'rangeCheck()', Oracle lo demandará. –

Respuesta

3

Se puede crear una clase mecanografiado Range que tiene un método within:

public class Range<T extends Comparable<T>> { 

    private final T min; 
    private final T max; 

    public Range(T min, T max) { 
     this.min = min; 
     this.max = max; 
    } 

    public boolean within(T value) { 
     return min.compareTo(value) <= 0 && max.compareTo(value) >= 0; 
    } 
} 

Si min y max son las mismas para un grupo de pruebas, se puede reutilizar el objeto range para todas las pruebas.

FWIW, esto parece ser útil!

+0

¿Cómo funcionan '> =' y '<=' con comparable? –

+0

@OpDeCirkel Gracias por elegir eso. ¡Simplemente lo escribí sin un IDE y sin pensarlo! Corregido ahora - Saludos – Bohemian

2

um ...

value >= min && value <= max 

duda si realmente necesita una función para la que se puede escribir fácilmente usted mismo?

+2

Por otro lado, 'Math.abs()' existe, y es un valor de impl – Bohemian

+0

aún más simple> = min && value <= max es lo que siempre uso ... Es porque voy a usarlo como: 35 veces ... y sería molesto hacerlo por cada cláusula ... ¡Gracias! –

+0

@Ivan Seidel: tiene 29 caracteres. La llamada a la función tendría 23. Apuesto a que hay molestias mucho más grandes en las que podría pasar su tiempo. –

2

No existe.

Un lugar 'sensible' de lo que sería en el módulo de matemáticas, pero ya que es simplemente expresa en la expresión

min < value && value < max 

parece un poco excesivo.

+0

Sé que es simple, ya que Math.abs() es simple, pero mejor que (val <0? Val * -1: val) –

+0

Bueno, 'abs' es un método de Java con un equivalente matemático. Además, devuelve un número entero. 'range' es una prueba booleana que devuelve verdadero o falso y no tiene un equivalente matemático real. De hecho, en una situación del mundo real, la prueba de que un valor está dentro de un rango numérico probablemente tenga un nombre más útil del dominio del problema, como 'isAValidChoice (min, max, value)' ... de hecho el 'min' y 'max' probablemente serían campos pertenecientes a cualquier clase que proporcionara el método' isAValidChoice'. – Dancrumb

Cuestiones relacionadas