उदाहरण
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
System.out.print("दो फ्लोटिंग पॉइंट मान दर्ज करें: ");
Scanner myScan = new Scanner(System.in);
double doubleVal = myScan.nextDouble(); // nextFloat() के बजाय nextDouble()
int intVal = myScan.nextInt();
System.out.println("फ्लोटिंग पॉइंट मान है: " + doubleVal + " और पूर्णांक मान है: " + intVal);
}
}
इनपुट
56.789 99
आउटपुट
दो फ्लोटिंग पॉइंट मान दर्ज करें:
फ्लोटिंग पॉइंट मान है: 56.789 और पूर्णांक मान है: 99
व्याख्या: Demo क्लास में मुख्य फंक्शन होता है, जिसके अंदर Scanner क्लास का एक ऑब्जेक्ट बनाया जाता है, और दो मान, एक डबल और एक इंटीजर मान पार्स किए जाते हैं। मान मानक इनपुट से लिए जाते हैं और फिर कंसोल पर प्रदर्शित किए जाते हैं।
Scanner ऑब्जेक्ट इनपुट को सीधे पार्स करता है, बिना इसे कई स्ट्रिंग्स में विभाजित किए। इसके अलावा, उपयोगकर्ता डेटा को एक ही लाइन पर या कई लाइनों पर इनपुट कर सकता है।
Scanner के साथ एकाधिक इनपुट के तरीके:
1. स्पेस-सेपरेटेड (एक लाइन):
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
double c = sc.nextDouble();
// इनपुट: 10 20 3.14
2. लाइन-बाय-लाइन:
String line = sc.nextLine(); // पूरी लाइन पढ़ता है
String[] parts = line.split("\\s+");
// फिर पार्स करें
3. अगल-अलग लाइन्स:
int a = sc.nextInt(); // पहली लाइन
int b = sc.nextInt(); // दूसरी लाइन
Scanner vs BufferedReader:
| पहलू | Scanner | BufferedReader |
|---|---|---|
| पार्सिंग | बिल्ट-इन (nextInt, nextDouble) | मैन्युअल (parseInt, parseDouble) |
| प्रदर्शन | धीमा (रेगेक्स उपयोग करता है) | तेज |
| उपयोग में आसानी | सरल | अधिक कोड |
| बफर आकार | 1024 चर | 8192 चर (डिफ़ॉल्ट) |
सर्वोत्तम अभ्यास:
try (Scanner sc = new Scanner(System.in)) {
// एक लाइन से कई मान
if (sc.hasNextInt()) {
int a = sc.nextInt();
int b = sc.nextInt();
// ...
}
}