java scanner class tutorial with examples
इस ट्यूटोरियल में, हम चर्चा करेंगे कि जावा के स्कैनर क्लास का आयात और उसके विभिन्न तरीकों, स्कैनर एपीआई और परीक्षाओं के साथ उपयोग कैसे करें:
हमने पहले से मानक I / O उपकरणों के डेटा को पढ़ने / लिखने के लिए जावा द्वारा उपयोग किए जाने वाले मानक इनपुट-आउटपुट तरीकों को देखा है।
जावा उपयोगकर्ता इनपुट पढ़ने के लिए एक और तंत्र प्रदान करता है। यह स्कैनर वर्ग है। हालांकि बहुत कुशल नहीं है, जावा प्रोग्राम में इनपुट पढ़ने के लिए स्कैनर क्लास सबसे आसान और पसंदीदा तरीका है।
=> यहाँ सभी जावा ट्यूटोरियल की जाँच करें।
आप क्या सीखेंगे:
जावा स्कैनर क्लास: इन-डेप्थ लुक
स्कैनर वर्ग का उपयोग ज्यादातर इनपुट को स्कैन करने और आदिम (अंतर्निहित) डेटा प्रकारों जैसे इंट, दशमलव, डबल, आदि के इनपुट को पढ़ने के लिए किया जाता है। स्कैनर वर्ग मूल रूप से कुछ सीमांकक पैटर्न के आधार पर टोकन इनपुट देता है। इस प्रकार, सामान्य तौर पर, यदि आप dt प्रकार पढ़ना चाहते हैं, तो आप इनपुट को पढ़ने के लिए फ़ंक्शन nextdt () का उपयोग कर सकते हैं।
एक स्कैनर वर्ग Iterator (स्ट्रिंग), क्लोजेबल और ऑटो क्लोजेबल इंटरफेस को लागू करता है।
आइए अब इस स्कैनर वर्ग का विवरण देखें।
आयात स्कैनर
स्कैनर वर्ग 'java.util' पैकेज के अंतर्गत आता है। इसलिए अपने प्रोग्राम में स्कैनर वर्ग का उपयोग करने के लिए, आपको इस पैकेज को निम्नानुसार आयात करना होगा।
आयात java.util। *
या
आयात java.util.Scanner;
उपरोक्त में से कोई भी कथन आपके प्रोग्राम में स्कैनर वर्ग और उसकी कार्यक्षमता को आयात करेगा।
जावा स्कैनर क्लास
एक बार स्कैनर प्रोग्राम को जावा प्रोग्राम में आयात कर लेने के बाद, आप इसे विभिन्न डेटा प्रकारों के इनपुट को पढ़ने के लिए उपयोग कर सकते हैं। क्या आप मानक इनपुट या फ़ाइल या चैनल से इनपुट पढ़ना चाहते हैं, इसके आधार पर, आप स्कैनर ऑब्जेक्ट के लिए उपयुक्त पूर्वनिर्धारित ऑब्जेक्ट पास कर सकते हैं।
नीचे दिए गए स्कैनर वर्ग के उपयोग का एक मूल उदाहरण है।
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
आउटपुट:
उपरोक्त कार्यक्रम में, हमने स्कैनर क्लास ऑब्जेक्ट बनाते समय ऑब्जेक्ट के रूप में 'System.in' (मानक इनपुट) प्रदान किया है। फिर हम मानक इनपुट से एक स्ट्रिंग इनपुट पढ़ते हैं।
स्कैनर एपीआई (निर्माता और विधियाँ)
इस खंड में, हम विस्तार से स्कैनर वर्ग एपीआई का पता लगाएंगे। स्कैनर वर्ग में विभिन्न इनपुट विधियों जैसे कि System.in, फ़ाइल इनपुट, पथ, आदि को समायोजित करने के लिए विभिन्न अतिभारित निर्माता होते हैं।
निम्न तालिका स्कैनर वर्ग के निर्माणकर्ताओं में से प्रत्येक का प्रोटोटाइप और विवरण देती है।
c ++ बाइनरी ट्री उदाहरण
ऐसा न करें | प्रोटोटाइप | विवरण |
---|---|---|
। | स्कैनर (पथ स्रोत, स्ट्रिंग वर्णसेट) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट फ़ाइल को स्कैन करता है और मूल्यों का उत्पादन करता है |
1 | स्कैनर (InputStream स्रोत) | यह कंस्ट्रक्टर एक नया स्कैनर बनाता है जो नए InputStream को स्कैन करता है, सोर्स करता है और वैल्यूज़ पैदा करता है |
दो | स्कैनर (InputStream स्रोत, स्ट्रिंग charsetName) | यह कंस्ट्रक्टर एक नया स्कैनर बनाता है जो नए InputStream को स्कैन करता है, सोर्स करता है और वैल्यूज़ पैदा करता है |
३ | स्कैनर (फ़ाइल स्रोत) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट फ़ाइल को स्कैन करता है और मूल्यों का उत्पादन करता है |
४ | स्कैनर (फ़ाइल स्रोत, स्ट्रिंग charsetName) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट फ़ाइल को स्कैन करता है और मूल्यों का उत्पादन करता है |
५ | स्कैनर (स्ट्रिंग स्रोत) | यह कंस्ट्रक्टर एक नया स्कैनर बनाता है जो निर्दिष्ट स्ट्रिंग को स्कैन करता है और मूल्यों का उत्पादन करता है |
६ | स्कैनर (पथ स्रोत) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट फ़ाइल को स्कैन करता है और मूल्यों का उत्पादन करता है |
। | स्कैनर (पठनीय स्रोत) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट स्रोत को स्कैन करता है और मूल्यों का उत्पादन करता है |
९ | स्कैनर (पठनीयबेचनेल स्रोत) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट चैनल को स्कैन करता है और मूल्यों का उत्पादन करता है |
१० | स्कैनर (ReadByteChannel स्रोत, स्ट्रिंग charsetName) | यह निर्माता एक नया स्कैनर बनाता है जो निर्दिष्ट चैनल को स्कैन करता है और मूल्यों का उत्पादन करता है |
कंस्ट्रक्टरों की तरह, स्कैनर वर्ग भी कई तरीकों को प्रदान करता है जो इनपुट को स्कैन करने और पढ़ने के लिए उपयोग किए जाते हैं। यह विभिन्न बूलियन तरीके प्रदान करता है जो आपको यह जांचने की अनुमति देते हैं कि इनपुट में अगला टोकन किसी विशेष डेटा प्रकार का टोकन है या नहीं।
ध्यान दें कि प्रत्येक कंस्ट्रक्टर के लिए, आप पूर्वनिर्धारित इनपुट ऑब्जेक्ट के साथ या तो केवल एक तर्क प्रदान कर सकते हैं या पूर्वनिर्धारित इनपुट ऑब्जेक्ट और वर्ण सेट से युक्त दो तर्क। एक तर्क के मामले में, डिफ़ॉल्ट वर्ण सेट मान लिया गया है।
प्रत्येक डेटा प्रकार के टोकन को पुनः प्राप्त करने के तरीके भी हैं।
अन्य तरीकों में लोकेल, मूलांक, मैच पैटर्न, क्लोजर स्कैनर आदि सेट करना शामिल है।
निम्न तालिका मूल स्कैनर विधियों में से प्रत्येक का प्रोटोटाइप और विवरण देती है।
ऐसा न करें | प्रोटोटाइप | विवरण |
---|---|---|
। | बूलियन नेनेटक्लोअट () | जाँचता है कि स्कैनर इनपुट में अगला टोकन फ्लोट प्रकार का है या नहीं |
1 | बूलियन नेक्स्ट () | यदि स्कैनर के इनपुट में एक और टोकन है तो यह सही है |
दो | बूलियन hasNextBigDecimal () | जाँचता है कि स्कैनर इनपुट में अगला टोकन बिगडेक्मल प्रकार का है। |
३ | बूलियन hasNextBigInteger () | जांचता है कि स्कैनर इनपुट में अगला टोकन बिगइंटर टाइप का है या नहीं |
४ | बूलियन नेनेटबुलियन () | जाँचता है कि स्कैनर इनपुट में अगला टोकन बुलियन प्रकार का है या नहीं |
५ | बूलियन hasNextByte () | जांचता है कि स्कैनर इनपुट में अगला टोकन किस प्रकार का है |
६ | बूलियन hasNextDouble () | जांचता है कि स्कैनर इनपुट में अगला टोकन डबल प्रकार का है या नहीं |
। | बूलियन hasNextInt () | जाँचता है कि स्कैनर इनपुट में अगला टोकन पूर्णांक प्रकार का है |
९ | बूलियन नेक्स्टलाइन () | जाँचता है कि स्कैनर इनपुट में अगला टोकन एक और पंक्ति है |
१० | बूलियन hasNextLong () | जाँचता है कि स्कैनर इनपुट में अगला टोकन लंबे प्रकार का है या नहीं |
ग्यारह | बूलियन नेक्स्टशोर्ट () | जाँचता है कि स्कैनर इनपुट में अगला टोकन लघु प्रकार का है या नहीं |
१२ | स्ट्रिंग अगले () | अगले पूर्ण टोकन के लिए इनपुट स्कैन करता है |
१३ | BigDecimal nextBigDecimal () | अगले BigDecimal टोकन के लिए इनपुट स्कैन करता है |
१४ | BigInteger अगला | अगले BigInteger टोकन के लिए इनपुट स्कैन करता है |
पंद्रह | बूलियन अगले बूलियन () | अगले बूलियन टोकन के लिए इनपुट स्कैन करता है |
१६ | बाइट नेक्स्ट बाइट () | अगले बाइट टोकन के लिए इनपुट स्कैन करता है |
१। | डबल अगला () | अगले डबल टोकन के लिए इनपुट स्कैन करता है |
१। | फ़्लोट नेक्लोफ़ैट () | अगले फ्लोट टोकन के लिए इनपुट स्कैन करता है |
१ ९ | इंट नेक्स्ट | अगले पूर्णांक टोकन के लिए इनपुट स्कैन करता है |
बीस | स्ट्रिंग नेक्स्टलाइन () | स्कैनर ऑब्जेक्ट से इनपुट स्ट्रिंग को छोड़ दें |
इक्कीस | अगला अगला () | अगले लंबे पूर्णांक टोकन के लिए इनपुट स्कैन करता है |
२२ | लघु अगलाशॉट () | अगले लघु पूर्णांक टोकन के लिए इनपुट स्कैन करता है |
२। ३ | स्कैनर रीसेट () | वर्तमान में उपयोग में स्कैनर को रीसेट करें |
२४ | स्कैनर स्किप () | सीमांकक को अनदेखा करें और दिए गए पैटर्न से मेल खाने वाले इनपुट को छोड़ दें |
२५ | स्कैनर का उपयोग | निर्दिष्ट पैटर्न पर परिसीमन पैटर्न सेट करें |
२६ | स्कैनर का उपयोग करें () | दिए गए स्थान के साथ स्कैनर्स लोकेल ऑब्जेक्ट सेट करें |
२। | स्कैनर का उपयोग करें | निर्दिष्ट रेडिक्स को स्कैनर के लिए डिफ़ॉल्ट मूलांक के रूप में सेट करें |
२। | इंट मूलांक () | वर्तमान स्कैनर के डिफ़ॉल्ट मूलांक देता है |
२ ९ | शून्य हटाना () | उपयोग किया जा सकता है जब Iterator ऑपरेशन हटाने का समर्थन नहीं करता है |
३० | स्ट्रीम टोकन () | वर्तमान स्कैनर से अलग किए गए टोकन की एक धारा लौटाता है |
३१ | स्ट्रिंग toString () | वर्तमान में उपयोग में दिए गए स्कैनर के रिटर्न स्ट्रिंग प्रतिनिधित्व |
32 | IOException ioException () | स्कैनर ऑब्जेक्ट के पठनीय द्वारा फेंके गए IOException को अंतिम रूप देता है |
33 | स्ट्रीम खोजें () | दिए गए पैटर्न से मेल खाने वाले मैच परिणामों की धारा लौटाता है |
3. 4 | स्ट्रिंग खोजइलाइन () | दिए गए तार से पैटर्न की अगली घटना का पता लगाएं; सीमांकक की उपेक्षा करता है |
३५ | स्ट्रिंग findWithinHorizon () | दिए गए तार से पैटर्न की अगली घटना का पता लगाएं; सीमांकक की उपेक्षा करता है |
३६ | पैटर्न सीमांकक () | वर्तमान स्कैनर द्वारा उपयोग किए गए पैटर्न को लौटाता है |
३। | शून्य बंद () | स्कैनर बंद कर देता है |
३। | MatchResult मैच () | अंतिम स्कैनिंग ऑपरेशन के मिलान परिणाम लौटाता है |
३ ९ | स्थानीय स्थानीय () | वर्तमान स्कैनर का लोकल लौटें |
जाँच यहां स्कैनर विधियों के बारे में अधिक जानने के लिए।
जावा में स्कैनर का उपयोग कैसे करें?
अब जब आपने स्कैनर वर्ग द्वारा प्रदान किए गए विभिन्न निर्माणकर्ताओं और विधियों को देखा है, तो अब जावा में स्कैनर वर्ग का उपयोग कैसे करें, यह प्रदर्शित करने के लिए कुछ उदाहरणों को लागू करें।
निम्न क्रियान्वयन System.in यानि मानक इनपुट से इनपुट पढ़ने के लिए स्कैनर वर्ग के उपयोग को दर्शाता है।
यहां हम Scanner ऑब्जेक्ट बनाने के लिए पूर्वनिर्धारित System.in ऑब्जेक्ट का उपयोग करते हैं। उपयोगकर्ता को तब नाम, कक्षा और प्रतिशत दर्ज करने के लिए प्रेरित किया जाता है। इन सभी विवरणों को स्कैनर वर्ग ऑब्जेक्ट का उपयोग करके पढ़ा जाता है।
विभिन्न प्रकार के इनपुट को पढ़ने के लिए स्कैनर ऑब्जेक्ट द्वारा उपयोग की जाने वाली विधियों पर ध्यान दें। जैसा कि नाम एक स्ट्रिंग है, स्कैनर ऑब्जेक्ट अगली () विधि का उपयोग करता है। वर्ग इनपुट के लिए, यह nextInt () का उपयोग करता है जबकि प्रतिशत के लिए यह nextFloat () का उपयोग करता है।
इस तरीके से, आप पढ़ते समय इनपुट को आसानी से अलग कर सकते हैं।
कार्यक्रम का आउटपुट दर्ज किए गए इनपुट और प्रदर्शित जानकारी को दर्शाता है।
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
आउटपुट:
स्कैनर स्ट्रिंग
जैसा कि पहले ही उल्लेख किया गया है, आप स्कैनर ऑब्जेक्ट बनाते समय विभिन्न पूर्वनिर्धारित वस्तुओं का उपयोग कर सकते हैं। इसका मतलब है कि आप या तो मानक इनपुट, फ़ाइलों और विभिन्न I / O चैनलों से या स्ट्रिंग से इनपुट पढ़ सकते हैं।
जब एक स्ट्रिंग इनपुट का उपयोग किया जाता है, तो आप इसके अंदर नियमित अभिव्यक्ति का भी उपयोग कर सकते हैं।
निम्न उदाहरण प्रोग्राम को दिखाते हैं जिसमें स्कैनर एक इनपुट के रूप में स्ट्रिंग का उपयोग करता है। यह इनपुट तब स्कैन किया जाता है और प्रत्येक टोकन को पढ़कर टोकन अलग कर दिए जाते हैं।
तब पढ़े गए टोकन आउटपुट में प्रदर्शित होते हैं।
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
आउटपुट:
स्कैनर बंद करें
जावा स्कैनर क्लास स्कैनर को बंद करने के लिए 'बंद ()' विधि का उपयोग करता है। स्कैनर वर्ग आंतरिक रूप से एक क्लोजेबल इंटरफ़ेस को लागू करता है और इसलिए यदि स्कैनर पहले से ही बंद नहीं है, तो अंतर्निहित रीडेबल इंटरफ़ेस अपने करीबी तरीके को लागू करता है।
एक बार जब आप इसे इस्तेमाल करते हैं तो क्लोजर () विधि का उपयोग करके स्पष्ट रूप से बंद करना एक अच्छा प्रोग्रामिंग अभ्यास है।
ध्यान दें: यदि स्कैनर ऑब्जेक्ट बंद है और खोज करने का प्रयास किया जाता है, तो इसका परिणाम 'IllegalStateException' होता है।
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में स्कैनर वर्ग क्या है?
उत्तर: स्कैनर वर्ग जावा के “java.util” पैकेज का एक हिस्सा है और इसका उपयोग विभिन्न आदिम डेटा प्रकारों जैसे इंट, फ्लोट, स्ट्रिंग्स आदि के इनपुट को पढ़ने के लिए किया जाता है।
शीर्ष गेमिंग कंपनियों के लिए काम करने के लिए
Q # 2) स्कैनर वर्ग के अगले () और नेक्स्टलाइन () तरीकों में क्या अंतर है?
उत्तर: अगला तरीका () अंतरिक्ष तक इनपुट पढ़ता है और इनपुट पढ़ने के बाद उसी लाइन पर कर्सर रखता है। नेक्स्टलाइन () हालांकि रिक्त स्थान सहित लाइन के अंत तक इनपुट की पूरी लाइन को पढ़ता है।
Q # 3) जावा में hasNext () क्या है?
उत्तर: विधि hasNext () जावा स्कैनर विधियों में से एक है। यदि स्कैनर इनपुट में एक और टोकन है, तो यह विधि सही है।
Q # 4) क्या आपको स्कैनर क्लास बंद करने की आवश्यकता है?
उत्तर: यह बेहतर है लेकिन स्कैनर वर्ग को बंद करना अनिवार्य नहीं है जैसे कि यह बंद नहीं है, स्कैनर वर्ग का अंतर्निहित पठनीय इंटरफ़ेस आपके लिए काम करता है। कंपाइलर कुछ चेतावनी फ्लैश कर सकता है, हालांकि अगर यह बंद न हो।
इसलिए एक अच्छे प्रोग्रामिंग अभ्यास के रूप में, हमेशा स्कैनर को बंद करें।
Q # 5) स्कैनर वर्ग में 'system.in' का उद्देश्य क्या है?
उत्तर: स्कैनर वर्ग में 'System.in' का उपयोग करके, आप स्कैनर को मानक इनपुट डेटा से जुड़े कीबोर्ड को पढ़ने की अनुमति दे रहे हैं।
निष्कर्ष
इस ट्यूटोरियल में, हमने स्कैनर वर्ग और एपीआई और कार्यान्वयन सहित इसके सभी विवरणों को देखा है। स्कैनर वर्ग का उपयोग विभिन्न प्रकार के माध्यमों से इनपुट डेटा को पढ़ने के लिए किया जाता है, जैसे मानक इनपुट, फाइलें, IO चैनल, स्ट्रिंग्स के साथ / बिना नियमित रूप से, आदि।
हालांकि स्कैनर इनपुट पढ़ने का एक बहुत ही कुशल तरीका नहीं है, लेकिन यह सबसे आसान तरीकों में से एक है। स्कैनर आपको विभिन्न आदिम डेटा प्रकारों जैसे इंट, फ्लोट, स्ट्रिंग्स इत्यादि के इनपुट को पढ़ने की अनुमति देता है। जब आप स्कैनर वर्ग के लिए इनपुट ऑब्जेक्ट के रूप में स्ट्रिंग्स का उपयोग करते हैं, तो आप इसके साथ नियमित अभिव्यक्तियों का भी उपयोग कर सकते हैं।
स्कैनर वर्ग आपको कुछ पैटर्न या सीमांकक के मेल द्वारा इनपुट पढ़ने की अनुमति देता है।
निष्कर्ष निकालने के लिए, जावा में स्कैनर वर्ग का उपयोग इनपुट पढ़ने का सबसे आसान और पसंदीदा तरीका है।
=> यहाँ बिल्कुल सही जावा प्रशिक्षण गाइड देखें।
अनुशंसित पाठ
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल
- जावा ऐरे क्लास ट्यूटोरियल - java.util.Arays क्लास उदाहरण के साथ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- जावा में दांतेदार सरणी - उदाहरणों के साथ ट्यूटोरियल
- जावा सरणी कोड कोड के साथ लंबाई ट्यूटोरियल
- जावा स्ट्रिंग ट्यूटोरियल | उदाहरण के साथ जावा स्ट्रिंग के तरीके