1. कन्सोल वापरून वाचनSystem.in

मागील धड्यांमध्ये, आम्ही स्क्रीनवर माहिती प्रदर्शित करण्यासाठी कमांड्सशी परिचित झालो. हे करण्यासाठी, आम्ही System.outऑब्जेक्ट आणि त्याच्या print()आणि println()पद्धती वापरल्या आहेत. हे सोपे आणि सोयीस्कर आहे.

परंतु, जसे आपण आधीच अंदाज लावला आहे, स्क्रीनवर माहिती प्रदर्शित करणे आमच्यासाठी पुरेसे नाही. बहुतेक प्रोग्राम्सचा उद्देश वापरकर्त्यासाठी काहीतरी उपयुक्त करणे हा आहे. याचा अर्थ असा की वापरकर्त्यासाठी कीबोर्डवरून डेटा प्रविष्ट करण्यास सक्षम असणे खूप वेळा आवश्यक असते.

आउटपुटच्या बाबतीत जसे होते, आमच्याकडे डेटा इनपुटसाठी एक विशेष ऑब्जेक्ट देखील आहे — System.in. पण, दुर्दैवाने आमच्यासाठी, आम्हाला पाहिजे तितके ते सोयीचे नाही. हे आम्हाला कीबोर्डवरील डेटा एका वेळी एक अक्षर वाचू देते.

यामध्ये सुधारणा करण्यासाठी, आम्ही दुसरा वर्ग वापरू जे ऑब्जेक्टसह जोडले गेल्यावर System.in, आम्हाला आवश्यक असलेल्या सर्व गोष्टी देईल. बर्‍याच काळापासून Java, प्रत्येक प्रसंगाला अनुरूप असे वर्ग आहेत. आणि आम्ही आता त्यापैकी एक जाणून घेऊ.


2. Scannerवर्ग

वर्ग Scanner(पूर्ण नाव: java.util.Scanner) विविध स्त्रोतांकडून डेटा वाचू शकतो, उदा. कन्सोल, फाइल्स आणि इंटरनेट. आम्हाला कीबोर्डवरून डेटा वाचायचा असेल, तर System.inडेटा स्रोत म्हणून काम करणारी युक्तिवाद म्हणून आम्ही ऑब्जेक्टमध्ये पास केले पाहिजे. आणि मग स्कॅनर ऑब्जेक्ट त्याचे काय करायचे ते शोधून काढेल.

ऑब्जेक्ट वापरून कीबोर्डवरून वाचणे Scannerअसे काहीतरी दिसेल:

कोड स्पष्टीकरण
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
आम्ही एक Scannerवस्तू तयार करतो. आम्ही कीबोर्डवरून मजकूराची एक ओळ
वाचतो . कीबोर्डवरून आपण संख्या वाचतो .

हे सोपे दिसते, परंतु ते खरोखर इतके सोपे आहे का?

मला वाटते की तुमच्याकडे अनेक प्रश्न असतील आणि आता आम्ही त्यांची उत्तरे देऊ.

परंतु प्रथम, वर्ग वापरणाऱ्या संपूर्ण प्रोग्रामचे उदाहरण दाखवूया Scanner:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      Scanner console = new Scanner(System.in);
      String name = console.nextLine();
      int age = console.nextInt();

      System.out.println("Name: " + name);
      System.out.println("Age: " + age);
   }
}

3. Scannerऑब्जेक्ट तयार करणे

पहिला प्रश्न म्हणजे ही ओळ काय आहे Scanner console = new Scanner (System.in);?

ही ओळ गोंधळात टाकणारी असू शकते, परंतु तुम्हाला नेहमी सारख्याच गोष्टी दिसतील. त्यामुळे येथे काय चालले आहे हे स्पष्ट करणे आम्हाला महत्त्वाचे वाटते.

आम्ही सहसा मजकूरासह व्हेरिएबल कसे तयार करतो ते आठवा:

String str = "text";
स्ट्रिंग व्हेरिएबल घोषित करणे आणि आरंभ करणे

प्रथम, आपण व्हेरिएबलचा प्रकार ( String), नंतर त्याचे नाव ( str) लिहू आणि शेवटी, समान चिन्हानंतर, मूल्य लिहू.

आमची विस्मयकारक ओळ प्रत्यक्षात समान आहे:

Scanner console = new Scanner(System.in);
Scannerव्हेरिएबल घोषित करणे आणि आरंभ करणे

समान चिन्हाच्या डावीकडील सर्व काही हे नावाच्या व्हेरिएबलची घोषणा आहे consoleज्याचा प्रकार आहे Scanner. त्याऐवजी तुम्ही याला s किंवा scannerकिंवा अगदी कॉल करू शकता keyboard. मग कोड असे दिसेल:

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

मला वाटते की ते सर्व काही अधिक स्पष्ट करते.

परंतु समान चिन्हाच्या उजवीकडील कोड थोडा अधिक क्लिष्ट आहे. मी आता new Scanner(System.in); त्या म्हटल्याचा संदर्भ देत आहे, इथेही काही अलौकिक घडत नाही.

या कोडमध्ये, आम्ही जावा मशीनला सांगतो: एक नवीन ऑब्जेक्ट (कीवर्ड new) तयार करा ज्याचा प्रकार , नवीन तयार केलेल्या ऑब्जेक्टसाठी डेटा स्रोत म्हणून ऑब्जेक्टमध्ये Scanner पास करणे .System.inScanner

Scannerही संपूर्ण ओळ कार्यान्वित केल्यानंतर, आमच्याकडे एक व्हेरिएबल असेल console ज्याचा वापर आमचा प्रोग्राम कीबोर्डवरील डेटा वाचण्यासाठी करेल.


4. पद्धतींची यादी

वरील उदाहरणामध्ये, आमचे Scanner consoleव्हेरिएबल ऑब्जेक्टचा संदर्भ संग्रहित करते Scanner.

व्हेरिएबलद्वारे संदर्भित ऑब्जेक्टवर मेथड कॉल करण्यासाठी, तुम्ही व्हेरिएबलच्या नावानंतर एक पीरियड लिहा, त्यानंतर पद्धतीचे नाव आणि कोणतेही वितर्क लिहा. कमांडचे सामान्य स्वरूप खालीलप्रमाणे आहे:

variable.method(arguments);
व्हेरिएबलद्वारे संदर्भित ऑब्जेक्टवर पद्धत कॉल करणे

उदाहरणे:

System.out.println("Hello");
System.out.println(1);

तुम्ही फंक्शनमध्ये वितर्क पास करण्याची योजना करत नसल्यास, तुम्ही फक्त रिक्त कंस लिहा:

variable.method();
युक्तिवाद उत्तीर्ण न करता पद्धत कॉल करणे

उदाहरण:

System.out.println();

5. कन्सोल इनपुट

जेव्हा आमच्याकडे एखादी वस्तू असते Scanner, तेव्हा कीबोर्डवरून डेटा मिळवणे सोपे असते.

कीबोर्डवरील ओळ वाचण्यासाठी , तुम्हाला या आदेशाची आवश्यकता आहे:

String str = console.nextLine();

जेव्हा प्रोग्रामची अंमलबजावणी या ओळीवर पोहोचते, तेव्हा ते थांबेल आणि वापरकर्त्याने डेटा प्रविष्ट करण्याची प्रतीक्षा करेल आणि एंटर दाबा. नंतर वापरकर्त्याने प्रविष्ट केलेली प्रत्येक गोष्ट व्हेरिएबलमध्ये संग्रहित केली जाते str.

कीबोर्डवरून संख्या वाचण्यासाठी , तुम्हाला या आदेशाची आवश्यकता आहे:

int number = console.nextInt();

येथे सर्व काही मागील आदेशाप्रमाणे आहे. जेव्हा प्रोग्रामची अंमलबजावणी या ओळीवर पोहोचते, तेव्हा ते थांबेल आणि वापरकर्त्याने डेटा प्रविष्ट करण्याची प्रतीक्षा करेल आणि एंटर दाबा. त्यानंतर, वापरकर्त्याने प्रविष्ट केलेली प्रत्येक गोष्ट एका संख्येत रूपांतरित केली जाते आणि व्हेरिएबलमध्ये संग्रहित केली जाते number.

जर वापरकर्त्याने डेटा प्रविष्ट केला असेल जो पूर्णांकात रूपांतरित केला जाऊ शकत नाही, तर प्रोग्राम त्रुटी निर्माण करेल आणि बाहेर पडेल.

कीबोर्डवरून फ्रॅक्शनल नंबर वाचण्यासाठी , तुम्हाला या कमांडची आवश्यकता आहे:

double number = console.nextDouble();

हे विधान पद्धतीच्या प्रमाणेच आहे nextInt(), फक्त ते तपासते की प्रविष्ट केलेला डेटा एका doubleसंख्येमध्ये रूपांतरित केला जाऊ शकतो.

प्रोग्रामचे उदाहरण जे कीबोर्डवरून दोन संख्या वाचते आणि त्यांची बेरीज स्क्रीनवर प्रदर्शित करते:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      Scanner console = new Scanner(System.in);
      int a = console.nextInt();
      int b = console.nextInt();

      System.out.println(a + b);
   }
}
नोंद

वापरकर्ता एका ओळीवर अनेक संख्या प्रविष्ट करू शकतो, त्यांना रिक्त स्थानांसह विभक्त करतो: वर्गाच्या पद्धतींना Scannerहे कसे हाताळायचे हे माहित आहे. ते म्हणाले, प्रोग्राम वापरकर्त्याने दाबल्यानंतरच संख्या वाचतो Enter.



6. वर्गाच्या इतर Scannerपद्धती

तसे, वरील पद्धती वर्गाने Scannerऑफर केलेल्या सर्व नाहीत. पद्धतींची संपूर्ण यादी असे दिसते:

पद्धत वर्णन
nextByte()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोbyte
nextShort()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोshort
nextInt()
डेटा वाचतो आणि त्यास a मध्ये रूपांतरित करतोint
nextLong()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोlong
nextFloat()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोfloat
nextDouble()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोdouble
nextBoolean()
डेटा वाचतो आणि a मध्ये रूपांतरित करतोboolean
next()
एक "टोकन" वाचतो. टोकन स्पेस किंवा एंटर की दाबून वेगळे केले जातात
nextLine()
संपूर्ण ओळ वाचतो

अशा पद्धती देखील आहेत ज्या तुम्हाला इनपुटमध्ये पुढील टोकन प्रत्यक्षात न आणता तपासू देतात (ते वाचण्यासाठी कोणती पद्धत वापरायची हे जाणून घेण्यासाठी).

पद्धत वर्णन
hasNextByte()
आहे का byte? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का byte?
hasNextShort()
आहे का short? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का short?
hasNextInt()
आहे का int? इनपुट मध्ये रूपांतरित केले जाऊ शकते int?
hasNextLong()
आहे का long? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का long?
hasNextFloat()
आहे का float? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का float?
hasNextDouble()
आहे का double? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का double?
hasNextBoolean()
आहे का boolean? इनपुट a मध्ये रूपांतरित केले जाऊ शकते का boolean?
hasNext()
दुसरे टोकन आहे का?
hasNextLine()
दुसरी ओळ आहे का?

7. स्ट्रिंगमधून डेटा वाचणे

आम्ही पूर्वी नमूद केले आहे की Scannerवर्ग विविध स्त्रोतांकडून डेटा वाचू शकतो. त्यातील एक स्त्रोत म्हणजे मजकूराची स्ट्रिंग .

हे असे काहीतरी दिसते:

String str = "text";
Scanner scanner = new Scanner(str);

ऑब्जेक्ट तयार करताना , आपण ऑब्जेक्ट ऐवजी Scannerस्ट्रिंगमध्ये पास करतो . आणि आता ऑब्जेक्ट स्ट्रिंगमधील डेटा वाचेल. उदाहरण:strSystem.inscanner

प्रोग्राम कोड: स्पष्टीकरण:
import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
      String str = "10 20 40 60";
      Scanner scanner = new Scanner(str);
      int a = scanner.nextInt();
      int b = scanner.nextInt();

      System.out.println(a + b);
   }
}




// a == 10; 
// b == 20; 
स्क्रीन आउटपुट असेल:30