2012-05-18 23 views
14

क्या इस तरह के ऑपरेशन के लिए कोई ऑपरेटर या चाल है? याजावा जंजीर असमानता अगर (5 <i <10)

if(5<i && i<10) 

का उपयोग करना आवश्यक है?

+0

का अर्थ क्या है

एक सीमा की जांच करने के लिए मानक तरीका या तो Guava Ranges उपयोग करने के लिए है 'i <10' हालत? –

+2

5 और 10 – Whimusical

उत्तर

12

जावा में ऐसी कोई चीज़ नहीं है (जब तक आप बूलियन के साथ काम नहीं करते)।

5<i<10 पर बाईं तरफ एक बुलियन में परिणाम जो संकलक नापसंद करते हैं।

23

आप श्रृंखला असमानताओं को नहीं कर सकते हैं। हालांकि, आप एक स्थिर बूलियन विधि isInRange(value, low, high) परिभाषित कर सकते हैं जो ऐसी जांच करेगा।

कुछ अन्य भाषाएं, जैसे पायथन या Icon, इस नोटेशन की अनुमति दें।

+10

के बीच संख्या शायद पैरामीटर को 'isInRange (कम, मान, उच्च)' के रूप में आदेश दिया जाना चाहिए। उदा। 'isInRange (5, i, 10)'। –

+0

वास्तव में, धन्यवाद :) – Gyscos

4

मुझे डर है कि इस समय जावा में जंजीर असमानता असमर्थित हैं। this उन भाषाओं के लिए पोस्ट करें जो करते हैं।

5

आप एक तुलना का उपयोग कर सकते हैं लेकिन आमतौर पर इसके लायक से अधिक जटिल है।

if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6)) 

यह सब मूल्य 5 समायोजित करने के लिए अधःप्रवाह उपयोग करता है और नीचे एक बड़ा सकारात्मक मूल्य किया जाना है।

इसका उपयोग करने का एकमात्र कारण माइक्रो-ऑप्टिमाइज़ेशन के रूप में है।

+3

आपने दो बार '6' लिखा था, शायद कुछ ओपी से बचना चाहता है। –

0

एक < एक्स < ख < 0, या एक्स एक अभिव्यक्ति आप केवल एक बार की गणना करना चाहते है अगर, (XA) (XB) के बराबर है

(एक्स - (ए + बी)/2)^2 < (बीए)^2/4

दो गैर-प्रतिबंधित बराबर के साथ एक ही सौदा। मुझे नहीं लगता कि एक सख्त और एक गैर-समान समानता से निपटने का एक तरीका है, हालांकि (जब तक कि एक्स पूर्णांक न हो)।

1

रेंज

तुलना जावा में जंजीर नहीं हो सकती है।

import com.google.common.collect.Range; 
... 
    if(Range.open(5, 10).contains(x)){ 

या अपाचे कॉमन्स लैंग (यह केवल पर्वतमाला, हालांकि बंद कर दिया प्रदान करता है):

import org.apache.commons.lang3.Range; 
... 
    if(Range.between(5 + 1, 10 - 1).contains(x)){