Integer.parseInt एक कलाकार के रूप में एक ही काम नहीं करता है।
के अपने पहले उदाहरण पर एक नज़र डालें:
int randomNumber=(int) (Math.random()*5)
math.random एक डबल देता है, और जब आप एक पूर्णांक द्वारा एक डबल गुणा जावा परिणाम समझता है एक डबल किया जाना है। इस प्रकार अभिव्यक्ति Math.random() * 5 में एक प्रकार का डबल है। आप जो करने का प्रयास कर रहे हैं वह उस प्रकार को मान int के चर के लिए असाइन किया गया है। डिफ़ॉल्ट रूप से जावा आपको संकलक को स्पष्ट रूप से बताए बिना टाइप int के चर के लिए एक डबल मान असाइन करने की अनुमति नहीं देगा कि ऐसा करना ठीक है। मूल रूप से आप कंपाइलर को बताते हुए एक int को एक int को कास्टिंग करने के बारे में सोच सकते हैं, "मुझे पता है कि यह int वैरिएबल इस डबल मान का दशमलव भाग नहीं रख सकता है, लेकिन यह ठीक है, बस इसे छोटा करें।"
अब किसी पूर्णांक पर एक स्ट्रिंग के रूपांतरण पर एक नज़र डालें:
int value = Integer.parseInt("5");
स्ट्रिंग "5" नहीं तुरंत एक पूर्णांक के लिए परिवर्तनीय है। युगल के विपरीत, जिसे परिभाषा द्वारा दशमलव भाग को छोड़कर एक पूर्णांक में परिवर्तित किया जा सकता है, स्ट्रिंग को आसानी से या लगातार int में परिवर्तित नहीं किया जा सकता है।"5", "042", और "1,000" सभी में पूर्णांक प्रतिनिधित्व हैं, लेकिन कुछ "हैलो, वर्ल्ड!" नहीं करता। इस वजह से स्ट्रिंग को एक int में परिवर्तित करने के लिए कोई पहली ऑर्डर भाषा सुविधा नहीं है। इसके बजाय, आप स्ट्रिंग को पार्स करने और मान वापस करने के लिए एक विधि का उपयोग करते हैं।
तो आपके सभी सवालों के जवाब देने:
क्यों दो अलग अलग तरीकों एक मूल्य के किसी पूर्णांक बनाने के लिए?
आपको यह ध्यान रखना होगा कि आप किस प्रकार के मूल्य को परिवर्तित कर रहे हैं। यदि आप एक प्राइमेटिव को int में परिवर्तित कर रहे हैं तो आप एक कास्ट का उपयोग कर सकते हैं, यदि आप ऑब्जेक्ट को परिवर्तित कर रहे हैं तो आपको उस प्रकार के विशिष्ट प्रकार की रूपांतरण विधि का उपयोग करने की आवश्यकता होगी।
इसके अलावा मैंने एक खोज की और कहा कि parseInt() एक तर्क के रूप में स्ट्रिंग लेता है .. तो क्या इसका मतलब यह है कि parseInt() केवल स्ट्रिंग को पूर्णांक में परिवर्तित करने के लिए है?
सही। आप किसी अन्य प्रकार को parseInt विधि में पास नहीं कर सकते हैं या आपको एक कंपाइलर त्रुटि मिल जाएगी।
इस कास्टिंग के बारे में क्या (int) ?? क्या हम स्ट्रिंग को एक int में बदलने के लिए इसका उपयोग कर सकते हैं?
नहीं, int को कास्टिंग केवल आदिम मूल्यों के लिए काम करेगा, और जावा में एक स्ट्रिंग एक आदिम नहीं है।
यह आपकी पारसी समस्याओं का उत्तर नहीं देगा, लेकिन 'java.util.Random' का उपयोग करने पर विचार करें। आप 'रैंडम रैंड = नया रैंडम()' और 'int dieRoll = rand.nextInt (6) +1; '(नोट,' अगला INT' 0 (n-1) लौटा सकता है, यही कारण है कि उस पर अतिरिक्त 1) – corsiKa
@glowcoder: मैं भी उस टिप्पणी को बनाने वाला था। यह आश्चर्य की बात है कि हम अभी भी यह 'Math.random() * एन' गैर-समझ को कितनी बार देखते हैं। – polygenelubricants
इस तरह से पूछताछ के लिए अच्छी तरह से किया गया है, विशेष रूप से बिट के बारे में हम एक int को स्ट्रिंग डालने के लिए (int) का उपयोग कर सकते हैं। – dewd