2012-06-10 17 views
5

कभी-कभी हम अनावश्यक कोड लिखते हैं। मेरा सवाल बहुत आसान है: क्या निम्न की तरह कोई तरीका है?जावा में रेंज (न्यूनतम, अधिकतम, मूल्य) फ़ंक्शन

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

मुझे इसे Google पर नहीं मिला। क्या ऐसा इसलिए है क्योंकि यह अस्तित्व में नहीं है?

+4

इसे नाम दें 'रेंज चेक()', ओरेकल आपको मुकदमा करेगा। –

उत्तर

3

आप एक टाइप किया Range वर्ग एक within विधि है कि बना सकते हैं।

एफडब्ल्यूआईडब्ल्यू, यह बहुत आसान लगता है!

+0

कैसे '> =' और '<=' तुलनीय के साथ काम करते हैं? –

+0

@OpDeCirkel इसे लेने के लिए धन्यवाद। मैंने इसे बिना किसी आईडीई और बिना सोच के टाइप किया! अब फिक्स्ड - चीयर्स – Bohemian

2

उम ...

value >= min && value <= max 

निश्चित रूप से यदि आप वास्तव में उस के लिए एक समारोह की जरूरत है आप आसानी से इसे अपने आप को लिख सकते हैं?

+2

दूसरी तरफ, 'Math.abs() 'मौजूद है, और यह एक आसान सरणी – Bohemian

+0

वैल्यू> = मिनट और मूल्य <= अधिकतम है जो मैं हमेशा उपयोग करता हूं ... ऐसा इसलिए है क्योंकि मैं इसका उपयोग करने जा रहा हूं जैसे: 35 बार ... और हर खंड के लिए ऐसा करने के लिए परेशान होगा ... धन्यवाद! –

+0

@ इवान सेडल: इसमें 2 9 वर्ण हैं। फ़ंक्शन कॉल में 23 होगा। मैं शर्त लगाता हूं कि आप बहुत दूर हैं, आप अपना समय व्यतीत कर सकते हैं। –

2

यह अस्तित्व में नहीं है। इसके लिए

ए 'समझदार' जगह गणित मॉड्यूल में हो सकता है, लेकिन जब से यह काफी बस अभिव्यक्ति

min < value && value < max 

में व्यक्त किया है यह एक छोटे अत्यधिक लगती है।

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; 
    } 
} 

तो न्यूनतम और अधिकतम परीक्षण के एक समूह के लिए एक ही थे, तो आप सभी परीक्षणों के लिए अपने range वस्तु का पुन: उपयोग कर सकते हैं:

+0

मुझे पता है कि यह आसान है, क्योंकि Math.abs() सरल है, लेकिन (वैल <0? वैल * -1: वैल) –

+0

से बेहतर है, ठीक है, 'abs' गणितीय समकक्ष वाला जावा विधि है। इसके अलावा, यह एक पूर्णांक देता है। 'रेंज' एक बूलियन परीक्षण है जो सच या गलत लौटाता है और इसमें कोई वास्तविक गणितीय समकक्ष नहीं है। दरअसल, वास्तविक दुनिया की स्थिति में, परीक्षण जो कुछ संख्यात्मक सीमा के भीतर होता है, शायद समस्या डोमेन से अधिक उपयोगी नाम होगा, जैसे 'isAValidChoice (min, max, value) '... वास्तव में' min' और 'max' शायद 'isAValidChoice' विधि प्रदान की गई किसी भी कक्षा से संबंधित फ़ील्ड होगा। – Dancrumb

3

अपाचे कॉमन्स लैंग में NumberRange समेत कई रेंज कार्यान्वयन हैं।

कॉमन्स लैंग 3 में generic implementation है।

संबंधित मुद्दे