2012-06-10 9 views
5

A volte scrivere codice non necessario. La mia domanda è piuttosto semplice: esiste un metodo come il seguente?Range (min, max, valore) la funzione in Java

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

Non l'ho trovato su Google. È perché non esiste?

+4

Non nominarlo 'rangeCheck()', Oracle ti denuncerà. –

risposta

3

si potrebbe creare una tipizzato Range classe che ha un metodo 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; 
    } 
} 

Se min e max erano gli stessi per un gruppo di test, è possibile riutilizzare l'oggetto range per tutte le prove.

FWIW, questo sembra un pò a portata di mano!

+0

Come '> =' e '<=' funzionano con comparabili? –

+0

@OpDeCirkel Grazie per averlo raccolto. L'ho appena inserito senza IDE e senza pensarci! Risolto adesso - Saluti – Bohemian

2

um ...

value >= min && value <= max 

sicuramente se si ha realmente bisogno di una funzione per che si può facilmente scrivere voi stessi?

+2

D'altra parte, 'Math.abs()' esiste, ed è un impl ancora più semplice – Bohemian

+0

valore> = valore minimo && <= max è quello che io uso sempre ... It 's perché i' m intenzione di usarlo come: 35 volte ... e sarebbe fastidioso farlo per ogni clausola ... Grazie! –

+0

@Ivan Seidel: ha 29 caratteri. La chiamata alla funzione avrebbe avuto 23. Scommetto che ci sono molti più grandi fastidi su cui potresti passare il tuo tempo. –

2

Non esiste.

Un luogo 'sensibile' perché sarebbe nel modulo Math, ma dal momento che è molto semplicemente espresso nell'espressione

min < value && value < max 

sembra un po 'eccessivo.

+0

So 's semplice, come Math.abs() è semplice, ma meglio di (val <0 val * -1:? Val) –

+0

Beh,' abs' è un metodo Java con un equivalente matematico. Inoltre, restituisce un intero. 'range' è un test booleano che restituisce vero o falso e non ha un equivalente matematico reale. Infatti, in una situazione del mondo reale, il test che un valore è all'interno di un intervallo numerico probabilmente avrebbe un nome più utile dal dominio del problema, come 'isAValidChoice (min, max, value)' ... anzi il 'min' e 'max' probabilmente sarebbero campi appartenenti a qualsiasi classe fornita del metodo' isAValidChoice'. – Dancrumb

Problemi correlati