java scanner class tutorial with examples
Σε αυτό το σεμινάριο, θα συζητήσουμε τον τρόπο εισαγωγής και χρήσης της κλάσης σαρωτή της Java μαζί με τις διάφορες μεθόδους, το API σαρωτή και τα παραδείγματα:
Έχουμε ήδη δει τις τυπικές μεθόδους εισόδου-εξόδου που χρησιμοποιεί η Java για ανάγνωση / εγγραφή δεδομένων στις τυπικές συσκευές I / O.
Η Java παρέχει έναν ακόμη μηχανισμό για την ανάγνωση της εισόδου του χρήστη. Αυτή είναι η κατηγορία Scanner. Αν και δεν είναι πολύ αποτελεσματική, η κλάση σαρωτή είναι ο ευκολότερος και προτιμώμενος τρόπος για την ανάγνωση εισόδου σε προγράμματα Java.
=> Ελέγξτε ΟΛΑ τα Εκπαιδευτικά Java εδώ.
Τι θα μάθετε:
Τάξη σαρωτή Java: Μια εμφάνιση σε βάθος
Η κλάση σαρωτή χρησιμοποιείται κυρίως για τη σάρωση της εισόδου και την ανάγνωση της εισαγωγής πρωτόγονων (ενσωματωμένων) τύπων δεδομένων όπως int, δεκαδικός, διπλός κ.λπ. Έτσι, σε γενικές γραμμές, εάν θέλετε να διαβάσετε τον τύπο dt, τότε θα μπορούσατε να χρησιμοποιήσετε τη συνάρτηση nextdt () για να διαβάσετε την είσοδο.
Μια κλάση σαρωτή εφαρμόζει διεπαφές Iterator (string), Closeable και AutoCloseable.
Ας διερευνήσουμε τις λεπτομέρειες αυτής της κλάσης σαρωτή τώρα.
Εισαγωγή σαρωτή
Η κλάση σαρωτή ανήκει στο πακέτο 'java.util'. Ως εκ τούτου, για να χρησιμοποιήσετε την κλάση σαρωτή στο πρόγραμμά σας, πρέπει να εισαγάγετε αυτό το πακέτο ως εξής.
εισαγωγή java.util. *
Ή
εισαγωγή java.util.Scanner;
Οποιαδήποτε από τις παραπάνω δηλώσεις θα εισαγάγει την κλάση σαρωτή και τη λειτουργικότητά της στο πρόγραμμά σας.
Τάξη σαρωτή Java
Μόλις εισαχθεί η κλάση σαρωτή στο πρόγραμμα Java, μπορείτε να τη χρησιμοποιήσετε για να διαβάσετε την εισαγωγή διαφόρων τύπων δεδομένων. Ανάλογα με το αν θέλετε να διαβάσετε την είσοδο από τυπική είσοδο ή αρχείο ή κανάλι, μπορείτε να μεταβιβάσετε το κατάλληλο προκαθορισμένο αντικείμενο στο αντικείμενο σαρωτή.
Δίνεται παρακάτω είναι ένα βασικό παράδειγμα χρήσης κλάσης σαρωτή.
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' (τυπική είσοδος) ως αντικείμενο κατά τη δημιουργία ενός αντικειμένου κλάσης σαρωτή. Στη συνέχεια, διαβάζουμε μια είσοδο συμβολοσειράς από την τυπική είσοδο.
API σαρωτή (Κατασκευαστές & μέθοδοι)
Σε αυτήν την ενότητα, θα διερευνήσουμε λεπτομερώς το API κλάσης σαρωτή. Η κλάση σαρωτή περιέχει διάφορους υπερφορτωμένους κατασκευαστές για να φιλοξενήσει διάφορες μεθόδους εισόδου, όπως System.in, εισαγωγή αρχείων, διαδρομή κ.λπ.
Ο ακόλουθος πίνακας παρέχει το πρωτότυπο και την περιγραφή καθενός από τους κατασκευαστές κλάσης σαρωτή.
είναι το κλειδί ασφαλείας ίδιο με τον κωδικό πρόσβασης
Μην | Πρωτότυπο | Περιγραφή |
---|---|---|
7 | Σαρωτής (Πηγή διαδρομής, όνομα charset συμβολοσειράς) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο αρχείο και παράγει τις τιμές |
1 | Σαρωτής (πηγή InputStream) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το νέο InputStream, πηγάζει και παράγει τις τιμές |
δύο | Σαρωτής (InputStream source, String charsetName) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το νέο InputStream, πηγάζει και παράγει τις τιμές |
3 | Σαρωτής (πηγή αρχείου) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο αρχείο και παράγει τις τιμές |
4 | Σαρωτής (Πηγή αρχείου, Όνομα συμβολοσειράς) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο αρχείο και παράγει τις τιμές |
5 | Σαρωτής (πηγή συμβολοσειράς) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει την καθορισμένη συμβολοσειρά και παράγει τις τιμές |
6 | Σαρωτής (πηγή διαδρομής) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο αρχείο και παράγει τις τιμές |
8 | Σαρωτής (αναγνώσιμη πηγή) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει την καθορισμένη πηγή και παράγει τις τιμές |
9 | Σαρωτής (πηγή ReadableByteChannel) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο κανάλι και παράγει τις τιμές |
10 | Σαρωτής (πηγή ReadableByteChannel, String charsetName) | Αυτός ο κατασκευαστής κατασκευάζει ένα νέο σαρωτή που σαρώνει το καθορισμένο κανάλι και παράγει τις τιμές |
Όπως και οι κατασκευαστές, η κλάση Scanner παρέχει επίσης πολλές μεθόδους που χρησιμοποιούνται για σάρωση και ανάγνωση της εισόδου. Παρέχει διάφορες μεθόδους Boolean που σας επιτρέπουν να ελέγξετε αν το επόμενο διακριτικό στην είσοδο είναι ένα διακριτικό ενός συγκεκριμένου τύπου δεδομένων.
Σημειώστε ότι για κάθε κατασκευαστή, μπορείτε είτε να παρέχετε μόνο ένα όρισμα με το προκαθορισμένο αντικείμενο εισαγωγής ή δύο ορίσματα που αποτελούνται από προκαθορισμένο αντικείμενο εισαγωγής και σύνολο χαρακτήρων. Στην περίπτωση ενός ορίσματος, θεωρείται το προεπιλεγμένο σύνολο χαρακτήρων.
Υπάρχουν επίσης μέθοδοι για την ανάκτηση διακριτικών κάθε τύπου δεδομένων.
Άλλες μέθοδοι περιλαμβάνουν εκείνες για τον καθορισμό τοπικών ρυθμίσεων, ακτίνων, μοτίβων αντιστοίχισης, κλεισίματος σαρωτή κλπ
Ο παρακάτω πίνακας παρέχει το πρωτότυπο και την περιγραφή κάθε μιας από τις βασικές μεθόδους σαρωτή.
Μην | Πρωτότυπο | Περιγραφή |
---|---|---|
7 | Το Boolean hasNextFloat () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι τύπου float |
1 | Το Boolean hasNext () | Επιστρέφει true αν υπάρχει άλλο διακριτικό στην είσοδο του Scanner |
δύο | Boolean hasNextBigDecimal () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι τύπου bigDecimal. |
3 | Το Boolean hasNextBigInteger () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι τύπου bigInteger |
4 | Boolean hasNextBoolean () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι τύπου Boolean |
5 | Το Boolean hasNextByte () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι τύπου Byte |
6 | Το Boolean hasNextDouble () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι διπλού τύπου |
8 | Το Boolean hasNextInt () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι ακέραιου τύπου |
9 | Το Boolean hasNextLine () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι άλλη γραμμή |
10 | Το Boolean hasNextLong () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι μεγάλου τύπου |
έντεκα | Το Boolean hasNextShort () | Ελέγχει εάν το επόμενο διακριτικό στην είσοδο του σαρωτή είναι σύντομου τύπου |
12 | Επόμενη συμβολοσειρά () | Σαρώνει την είσοδο για το επόμενο πλήρες διακριτικό |
13 | BigDecimal επόμενο BigDecimal () | Σαρώνει την είσοδο για το επόμενο διακριτικό BigDecimal |
14 | BigInteger επόμενο BigInteger () | Σαρώνει την είσοδο για το επόμενο διακριτικό BigInteger |
δεκαπέντε | Boolean nextBoolean () | Σαρώνει την είσοδο για το επόμενο Boolean token |
16 | Byte nextByte () | Σαρώνει την είσοδο για το επόμενο διακριτικό Byte |
17 | Διπλό επόμενο Διπλό () | Σαρώνει την είσοδο για το επόμενο διπλό διακριτικό |
18 | Float nextFloat () | Σαρώνει την είσοδο για το επόμενο διακριτικό float |
19 | Int nextInt () | Σαρώνει την είσοδο για το επόμενο ακέραιο διακριτικό |
είκοσι | String nextLine () | Λήψη της συμβολοσειράς εισόδου από το αντικείμενο Scanner |
είκοσι ένα | Πολύ επόμενο Long () | Σαρώνει την είσοδο για το επόμενο μεγάλο ακέραιο διακριτικό |
22 | Σύντομη επόμενη σύντομη () | Σαρώνει την είσοδο για το επόμενο σύντομο ακεραίο διακριτικό |
2. 3 | Επαναφορά σαρωτή () | Επαναφέρετε το σαρωτή που χρησιμοποιείται αυτήν τη στιγμή |
24 | Παράλειψη σαρωτή () | Αγνοήστε τα οριοθέτες και παραλείψτε την είσοδο που ταιριάζει με το συγκεκριμένο μοτίβο |
25 | Χρήση σαρωτήDelimiter () | Ορίστε το μοτίβο οριοθέτησης στο καθορισμένο μοτίβο |
26 | Χρήση σαρωτή Locale () | Ορίστε το αντικείμενο τοπικής σάρωσης με τη δεδομένη τοποθεσία |
27 | Χρήση σαρωτή Radix () | Ορίστε την καθορισμένη ακτίνα ως την προεπιλεγμένη ακτίνα για το σαρωτή |
28 | Int radix () | Επιστρέφει την προεπιλεγμένη ακτίνα του τρέχοντος σαρωτή |
29 | ακύρωση αφαίρεσης () | Μπορεί να χρησιμοποιηθεί όταν το Iterator δεν υποστηρίζει τη λειτουργία αφαίρεσης |
30 | Διακριτικά ροής () | Επιστρέφει μια ροή διακριτικών διαχωρισμένων διακριτικών από το τρέχον σαρωτή |
31 | String toString () | Η παράσταση συμβολοσειράς επιστροφής του δεδομένου σαρωτή που χρησιμοποιείται αυτήν τη στιγμή |
32 | IOException ioException () | Επιστρέφει το IOException που ρίχτηκε τελευταία από αναγνώσιμο αντικειμένου Scanner |
33 | Εύρεση ροήςALL () | Επιστρέφει τη ροή των αποτελεσμάτων που ταιριάζουν με το συγκεκριμένο μοτίβο |
3. 4 | String findInLine () | Βρείτε την επόμενη εμφάνιση του μοτίβου από τη δεδομένη συμβολοσειρά. αγνοεί τα οριοθέτες |
35 | Εύρεση συμβολοσειράςWithinHorizon () | Βρείτε την επόμενη εμφάνιση του μοτίβου από τη δεδομένη συμβολοσειρά. αγνοεί τα οριοθέτες |
36 | Οριοθέτης μοτίβου () | Επιστρέφει το μοτίβο που χρησιμοποιείται από τον τρέχοντα σαρωτή |
37 | Άκυρο κλείσιμο () | Κλείνει το σαρωτή |
38 | MatchResult αγώνα () | Επιστρέφει το αντίστοιχο αποτέλεσμα της τελευταίας λειτουργίας σάρωσης |
39 | Τοπικό τοπικό () | Επιστρέψτε τις τοπικές ρυθμίσεις του τρέχοντος σαρωτή |
Ελεγχος εδώ για να μάθετε περισσότερα για τις μεθόδους σάρωσης.
Πώς να χρησιμοποιήσετε το σαρωτή στην Java;
Τώρα που έχετε δει τους διάφορους κατασκευαστές και μεθόδους που παρέχονται από την κλάση Scanner, ας εφαρμόσουμε τώρα μερικά από τα παραδείγματα για να δείξουμε πώς να χρησιμοποιήσετε την κλάση Scanner στην Java.
Η ακόλουθη εφαρμογή δείχνει τη χρήση της κλάσης σαρωτή για την ανάγνωση εισόδου από το System.in δηλ. Την τυπική είσοδο.
Εδώ χρησιμοποιούμε ένα προκαθορισμένο αντικείμενο System.in για να δημιουργήσουμε ένα αντικείμενο Scanner. Στη συνέχεια, ζητείται από τον χρήστη να εισαγάγει το όνομα, την τάξη και το ποσοστό. Όλες αυτές οι λεπτομέρειες διαβάζονται χρησιμοποιώντας το αντικείμενο κλάσης σαρωτή.
Σημειώστε τις μεθόδους που χρησιμοποιούνται από αντικείμενα Scanner για να διαβάσετε διαφορετικούς τύπους εισόδου. Καθώς το όνομα είναι συμβολοσειρά, το αντικείμενο Scanner χρησιμοποιεί την επόμενη () μέθοδο. Για είσοδο κλάσης, χρησιμοποιεί 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); } }
Παραγωγή:
Συμβολοσειρά σαρωτή
Όπως αναφέρθηκε ήδη, μπορείτε να χρησιμοποιήσετε διάφορα προκαθορισμένα αντικείμενα κατά τη δημιουργία ενός αντικειμένου σαρωτή. Αυτό σημαίνει ότι μπορείτε είτε να διαβάσετε την είσοδο από τυπική είσοδο, αρχεία και διάφορα κανάλια εισόδου / εξόδου ή από συμβολοσειρές επίσης.
Όταν χρησιμοποιείται μια είσοδος συμβολοσειράς, μπορείτε επίσης να χρησιμοποιήσετε κανονικές εκφράσεις μέσα σε αυτήν.
Τα ακόλουθα παραδείγματα δείχνουν το πρόγραμμα όπου το Scanner χρησιμοποιεί μια συμβολοσειρά ως είσοδο. Αυτή η είσοδος στη συνέχεια σαρώνεται και διακριτικά διαχωρίζονται διαβάζοντας κάθε διακριτικό.
Τα διακριτικά που διαβάζονται εμφανίζονται στη συνέχεια στην έξοδο.
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(); } }
Παραγωγή:
Κλείσιμο σαρωτή
Η κλάση Java Scanner χρησιμοποιεί τη μέθοδο 'Κλείσιμο ()' για να κλείσει το σαρωτή. Η κλάση σαρωτή εφαρμόζει επίσης εσωτερικά μια διασύνδεση με δυνατότητα κλεισίματος και επομένως, εάν ο σαρωτής δεν είναι ήδη κλειστός, η υποκείμενη διεπαφή με δυνατότητα ανάγνωσης επικαλείται τη μέθοδο κλεισίματος.
Είναι μια καλή πρακτική προγραμματισμού να κλείσετε ρητά το σαρωτή χρησιμοποιώντας τη μέθοδο Κλείσιμο () μόλις τελειώσετε με τη χρήση του.
Σημείωση: Εάν το αντικείμενο του σαρωτή είναι κλειστό και γίνει προσπάθεια αναζήτησης, οδηγεί σε 'IllegalStateException'.
Συχνές Ερωτήσεις
Q # 1) Τι είναι η κλάση σαρωτή στην Java;
Απάντηση: Η κλάση σαρωτή είναι μέρος του πακέτου 'java.util' της Java και χρησιμοποιείται για την ανάγνωση εισόδου διαφορετικών πρωτόγονων τύπων δεδομένων όπως int, float, string, κ.λπ.
κύκλος ζωής ανάπτυξης λογισμικού 5 φάσεις
Q # 2) Ποια είναι η διαφορά μεταξύ των μεθόδων Next () και NextLine () της κλάσης Scanner;
Απάντηση: Η επόμενη μέθοδος () διαβάζει την είσοδο έως το διάστημα και τοποθετεί τον κέρσορα στην ίδια γραμμή μετά την ανάγνωση της εισόδου. Ωστόσο, η μέθοδος nextLine () διαβάζει ολόκληρη τη γραμμή εισόδου μέχρι το τέλος της γραμμής, συμπεριλαμβανομένων των κενών.
Q # 3) Τι είναι το hasNext () στην Java;
Απάντηση: Η μέθοδος hasNext () είναι μία από τις μεθόδους Java Scanner. Αυτή η μέθοδος επιστρέφει αληθινή εάν ο σαρωτής έχει ένα άλλο διακριτικό στην είσοδο.
Q # 4) Πρέπει να κλείσετε μια τάξη σαρωτή;
Απάντηση: Είναι καλύτερο αλλά όχι υποχρεωτικό να κλείσετε την κλάση σαρωτή σαν να μην είναι κλειστή, η υποκείμενη διεπαφή ανάγνωσης της κλάσης σαρωτή κάνει τη δουλειά για εσάς. Ο μεταγλωττιστής ενδέχεται να αναβοσβήνει κάποια προειδοποίηση αν δεν είναι κλειστός.
Ως καλή πρακτική προγραμματισμού, κλείστε πάντα το σαρωτή.
Q # 5) Ποιος είναι ο σκοπός του 'system.in' στην κατηγορία Scanner;
Απάντηση: Χρησιμοποιώντας το 'System.in' στην κλάση σαρωτή, επιτρέπετε στο σαρωτή να διαβάσει το πληκτρολόγιο που είναι συνδεδεμένο σε τυπικά δεδομένα εισόδου.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε δει την κλάση σαρωτή και όλες τις λεπτομέρειες, συμπεριλαμβανομένου του API και της εφαρμογής. Η κλάση σαρωτή χρησιμοποιείται για την ανάγνωση δεδομένων εισόδου από μια ποικιλία μέσων όπως τυπική είσοδος, αρχεία, κανάλια IO, συμβολοσειρές με / χωρίς κανονικές εκφράσεις κ.λπ.
Αν και το Scanner δεν είναι ένας πολύ αποτελεσματικός τρόπος ανάγνωσης εισόδου, είναι ένας από τους ευκολότερους τρόπους. Ο σαρωτής σάς επιτρέπει να διαβάσετε την εισαγωγή διαφόρων πρωτόγονων τύπων δεδομένων, όπως int, float, string, κ.λπ. Όταν χρησιμοποιείτε συμβολοσειρές ως αντικείμενο εισαγωγής για την κατηγορία Scanner, μπορείτε επίσης να χρησιμοποιήσετε κανονικές εκφράσεις μαζί της.
Η κλάση σαρωτή σάς επιτρέπει επίσης να διαβάζετε είσοδο αντιστοιχίζοντας κάποιο μοτίβο ή οριοθέτη.
Εν κατακλείδι, η χρήση της κλάσης σαρωτή στην Java παραμένει ο ευκολότερος και προτιμώμενος τρόπος ανάγνωσης εισόδου.
=> Ανατρέξτε στον τέλειο οδηγό εκπαίδευσης Java εδώ.
Συνιστώμενη ανάγνωση
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- Εκπαιδευτικό μάθημα Java Array - java.util.Arrays Class με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Εκμάθηση Java Reflection με παραδείγματα
- Jagged Array In Java - Εκμάθηση με παραδείγματα
- Εκμάθηση μήκους σειράς Java με παραδείγματα κώδικα
- Εκμάθηση συμβολοσειράς Java | Μέθοδοι συμβολοσειράς Java με παραδείγματα