2013-04-12 13 views
22

मेरे पास कुछ सालों पहले इस साक्षात्कार का सवाल था लेकिन मुझे अभी तक जवाब नहीं मिला है।"x <= y && x > = y && x! = Y" के साथ लूप अनंत कैसे बनाएं?

अनंत लूप बनाने के लिए x और y क्या होना चाहिए?

while (x <= y&& x >= y && x != y) { 

} 

हम Nan, infinity+/- साथ की कोशिश की null

float बनाम int

+0

एक्स और वाई का प्रकार क्या है। क्या वे primitives या संदर्भ प्रकार हैं या उन्हें कुछ भी होने की अनुमति है? – prashant

+2

आप एक ही संख्या के दो उदाहरण चाहते हैं। '<=' and '> = 'एक दूसरे को तब तक रद्द करें जब तक x x संख्यात्मक रूप से y के बराबर न हो लेकिन' x == y' एक संदर्भ जांच है, दो उदाहरणों को er x = y' पर सत्य वापस आ जाएगा, भले ही मूल्य के बराबर हो। – Shark

+9

वाईएयूआईक्यू - अभी तक एक और बेकार साक्षात्कार प्रश्न। दिलचस्प, यहां तक ​​कि मनोरंजक, मुझे यहां मनोरंजन और सीखने के लिए इसे रखने का कोई आपत्ति नहीं है।लेकिन मुझे नहीं लगता कि यह किसी को भी मूल्यांकन करने में मदद करता है कि एक प्रोग्रामर कर्मचारी साक्षात्कारकर्ता कितना अच्छा होगा। – arcy

उत्तर

37

उदाहरण के लिए दो चर जिसमें तुलनात्मक कर रहे हैं, एक ही मूल्य है, लेकिन अलग-अलग विविधताएं प्रतिनिधित्व करते हैं की जरूरत है,:

Integer x = new Integer(0); 
Integer y = new Integer(0); 

x <= y और y <= x दोनों सही हैं क्योंकि Integer अनबॉक्स्ड रहे हैं, तथापि उदाहरण समानता x == y है असत्य।

ध्यान दें कि यह Float, Long और Double के साथ भी काम करता है, और कोई भी मान (केवल 0) काम नहीं करता है।


आप भी अपनी JVM की जटिलताओं के साथ खेल सकते हैं - वे आम तौर पर कैश पूर्णांक अप 127 केवल करने के लिए है, तो यह भी काम करेगा:

Integer x = 128; 
Integer y = 128; 

(लेकिन ऐसा नहीं 127 के साथ होता है)।

या बस, इसमें Double रों आम तौर पर सब पर कैश नहीं कर रहे हैं:

Double x = 0d; 
Double y = 0d; 
+3

... '<=' and '> =', के साथ तुलनीय है ... जो केवल हैं आदिम रैपर (उदा। बूलियन)। – Dukeling

+0

यह मुक्केबाजी के साथ कुछ शैतानी चाल है। अच्छा उत्तर। इसे पढ़ने वाले लोगों को 'Integer.valueOf (0)' का प्रयास करना चाहिए और देखें कि यह परिणाम को कैसे प्रभावित करता है। –

+0

(+1) चालाक! ... – NPE

5

आप उदाहरण के लिए दो पूर्णांक वस्तुओं को बनाने के लिए, है:

Integer x = new Integer(2); 
Integer y = new Integer(2); 

x क्योंकि और y वस्तुओं रहे हैं और कोई औपचारिक प्रकार नहीं, आपको अनंत लूप मिलता है।

0

यहां यह है।

Integer x =1; 
Integer y = new Integer(1); 
while(x <= y&& x >= y && x != y) { 
    System.out.println("Success"); 
} 
+1

अतिरिक्त मील चला गया और 'y = नया इंटीजर (x) घोषित किया गया;' – Shark

2

आपको अपना जवाब मिल गया है, मैं बस कहना चाहता था कि मैं वही कैसे मिला। सामान्य दुनिया में ऐसा परीक्षण बेकार होगा, इस तरह काम करने के लिए दो नंबरों का कोई तरीका नहीं है। तो इसका मतलब है कि यह कुछ जावा विशिष्ट होना है।

एक्स और वाई या तो सरल प्रकार हो सकते हैं - जो इसे तुरंत असंभव बनाता है।

एक्स और वाई ऑब्जेक्ट्स हो सकते हैं। लेकिन < = या> = के साथ किस वस्तु की तुलना की जाती है? केवल 'बॉक्सिंग' संख्याएं। इस प्रकार उत्तर वास्तव में तेजी से आता है।

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