1. का उपयोग कर कंसोल से पढ़नाSystem.in

पिछले पाठों में, हम स्क्रीन पर सूचना प्रदर्शित करने के लिए कमांड से परिचित हुए। ऐसा करने के लिए, हमने System.outऑब्जेक्ट और उसके print()और println()तरीकों का इस्तेमाल किया है। यह आसान और सुविधाजनक है।

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

जैसा कि आउटपुट के मामले में था, हमारे पास डेटा इनपुट के लिए भी एक विशेष वस्तु है — System.in. लेकिन, दुर्भाग्य से हमारे लिए, यह उतना सुविधाजनक नहीं है जितना हम चाहेंगे। यह हमें कीबोर्ड से डेटा को एक बार में एक वर्ण पढ़ने देता है।

इसमें सुधार करने के लिए, हम एक अन्य वर्ग का उपयोग करेंगे, जो System.inवस्तु के साथ जोड़े जाने पर, हमें वह सब कुछ देगा जिसकी हमें आवश्यकता है। लंबे समय से, जावा में हर अवसर के अनुरूप कक्षाएं होती हैं। और अब हम उनमें से एक को जानेंगे।


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.inके डेटा स्रोत के रूप में गुजर रहा है।Scanner

इस पूरी लाइन को निष्पादित करने के बाद, हमारे पास एक 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()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैbyte
nextShort()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैshort
nextInt()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैint
nextLong()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैlong
nextFloat()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैfloat
nextDouble()
डेटा पढ़ता है और इसे एक में परिवर्तित करता हैdouble
nextBoolean()
डेटा पढ़ता है और इसे एक में परिवर्तित करता है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);
   }
}




// ए == 10; 
// बी == 20; 
स्क्रीन आउटपुट होगा:30