java scanner class tutorial with examples
În acest tutorial, vom discuta despre modul de import și utilizare a clasei de scaner Java împreună cu diversele sale metode, API-ul scanerului și exemple:
Am văzut deja metodele standard de intrare-ieșire utilizate de Java pentru citirea / scrierea datelor pe dispozitivele I / O standard.
Java oferă încă un alt mecanism pentru a citi intrările utilizatorului. Aceasta este clasa Scanner. Deși nu este foarte eficientă, clasa Scanner este cel mai simplu și preferat mod de a citi intrările în programele Java.
=> Verificați TOATE Tutorialele Java aici.
Ce veți învăța:
Clasa de scanare Java: o privire în profunzime
Clasa scanerului este folosită în principal pentru a scana intrarea și a citi intrarea tipurilor de date primitive (încorporate), cum ar fi int, zecimal, dublu, etc. Astfel, în general, dacă doriți să citiți tipul dt, atunci puteți utiliza funcția nextdt () pentru a citi intrarea.
O clasă Scanner implementează interfețe Iterator (șir), închis și AutoCloseable.
Să explorăm acum detaliile acestei clase de scanere.
Importați scanerul
Clasa Scanner aparține pachetului „java.util”. Prin urmare, pentru a utiliza clasa Scanner în programul dvs., trebuie să importați acest pachet după cum urmează.
import java.util. *
SAU
import java.util.Scanner;
Oricare dintre declarațiile de mai sus va importa clasa Scanner și funcționalitatea acesteia în programul dvs.
Clasa de scanare Java
Odată ce clasa Scanner este importată în programul Java, o puteți folosi pentru a citi introducerea diferitelor tipuri de date. În funcție de dacă doriți să citiți intrarea din intrarea standard sau din fișier sau canal, puteți transmite obiectul predefinit corespunzător obiectului Scanner.
Dat mai jos este un exemplu de bază al utilizării clasei 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(); } }
Ieșire:
În programul de mai sus, am furnizat „System.in” (intrare standard) ca obiect în timp ce creăm un obiect de clasă Scanner. Apoi citim un șir de intrare din intrarea standard.
Scanner API (Constructori și metode)
În această secțiune, vom explora în detaliu API-ul clasei Scanner. Clasa Scanner conține diverși constructori supraîncărcați pentru a găzdui diverse metode de intrare, cum ar fi System.in, intrare fișier, cale etc.
Tabelul următor prezintă prototipul și descrierea fiecăruia dintre constructorii clasei Scanner.
tip de testare în ingineria software
Nu face | Prototip | Descriere |
---|---|---|
7 | Scanner (Sursă cale, șir de caractereNume) | Acest constructor construiește un nou scaner care scanează fișierul specificat și produce valorile |
1 | Scanner (sursă InputStream) | Acest constructor construiește un nou scaner care scanează noul InputStream, sursă și produce valorile |
Două | Scanner (sursa InputStream, String charsetName) | Acest constructor construiește un nou scaner care scanează noul InputStream, sursă și produce valorile |
3 | Scanner (sursa fișierului) | Acest constructor construiește un nou scaner care scanează fișierul specificat și produce valorile |
4 | Scanner (Sursa fișierului, String charsetName) | Acest constructor construiește un nou scaner care scanează fișierul specificat și produce valorile |
5 | Scanner (sursă șir) | Acest constructor construiește un nou scaner care scanează șirul specificat și produce valorile |
6 | Scanner (sursă cale) | Acest constructor construiește un nou scaner care scanează fișierul specificat și produce valorile |
8 | Scanner (sursă care poate fi citită) | Acest constructor construiește un nou scaner care scanează sursa specificată și produce valorile |
9 | Scanner (sursă ReadableByteChannel) | Acest constructor construiește un nou scaner care scanează canalul specificat și produce valorile |
10 | Scanner (sursă ReadableByteChannel, String charsetName) | Acest constructor construiește un nou scaner care scanează canalul specificat și produce valorile |
La fel ca și constructorii, clasa Scanner oferă, de asemenea, numeroase metode care sunt utilizate pentru scanarea și citirea intrării. Oferă diverse metode booleene care vă permit să verificați dacă următorul simbol din intrare este un simbol al unui anumit tip de date.
Rețineți că, pentru fiecare constructor, puteți furniza fie un singur argument cu obiectul de intrare predefinit, fie două argumente constând din obiect de intrare predefinit și set de caractere. În cazul unui argument, se presupune setul de caractere implicit.
Există, de asemenea, metode de recuperare a jetoanelor pentru fiecare tip de date.
Alte metode includ cele de setare a setărilor locale, radix, tipare de potrivire, închiderea scanerului etc.
Tabelul următor prezintă prototipul și descrierea fiecăreia dintre metodele de bază ale scanerului.
Nu face | Prototip | Descriere |
---|---|---|
7 | Boolean hasNextFloat () | Verifică dacă următorul simbol din intrarea Scanner este de tip float |
1 | Boolean hasNext () | Returnează adevărat dacă există un alt indicativ în intrarea scanerului |
Două | Boolean hasNextBigDecimal () | Verifică dacă următorul simbol din intrarea Scanner este de tip bigDecimal. |
3 | Boolean hasNextBigInteger () | Verifică dacă următorul simbol din intrarea Scanner este de tip bigInteger |
4 | Boolean hasNextBoolean () | Verifică dacă următorul simbol din intrarea Scanner este de tip boolean |
5 | Boolean hasNextByte () | Verifică dacă următorul simbol din intrarea Scanner este de tip Byte |
6 | Boolean hasNextDouble () | Verifică dacă următorul simbol din intrarea Scanner este de tip dublu |
8 | Boolean hasNextInt () | Verifică dacă următorul simbol din intrarea Scanner este de tip întreg |
9 | Boolean hasNextLine () | Verifică dacă următorul simbol din intrarea Scanner este o altă linie |
10 | Boolean hasNextLong () | Verifică dacă următorul simbol din intrarea Scanner este de tip lung |
unsprezece | Boolean hasNextShort () | Verifică dacă următorul simbol din intrarea Scanner este de tip scurt |
12 | Șir următor () | Scanează intrarea pentru următorul simbol complet |
13 | BigDecimal nextBigDecimal () | Scanează intrarea pentru următorul simbol BigDecimal |
14 | BigInteger nextBigInteger () | Scanează intrarea pentru următorul simbol BigInteger |
cincisprezece | Boolean următor Boolean () | Scanează intrarea pentru următorul simbol boolean |
16 | Byte nextByte () | Scanează intrarea pentru următorul jeton de octeți |
17 | Double nextDouble () | Scanează intrarea pentru următorul simbol dublu |
18 | Float nextFloat () | Scanează intrarea pentru următorul jeton float |
19 | Int nextInt () | Scanează intrarea pentru următorul simbol întreg |
douăzeci | String nextLine () | Obțineți șirul de intrare omis din obiectul Scanner |
douăzeci și unu | Long nextLong () | Scanează intrarea pentru următorul simbol întreg lung |
22 | Short nextShort () | Scanează intrarea următorului token Short short |
2. 3 | Resetare scaner () | Resetați scanerul utilizat în prezent |
24 | Skip scaner () | Ignorați delimitatorii și săriți intrarea care se potrivește cu modelul dat |
25 | Scanner useDelimiter () | Setați modelul de delimitare la modelul specificat |
26 | Utilizarea scanerului Locale () | Setați obiectul local Scanners cu localizarea dată |
27 | Utilizarea scanerului Radix () | Setați radioul specificat ca radioul implicit pentru Scanner |
28 | Int radix () | Returnează radioul implicit al scanerului curent |
29 | nul elimina () | Poate fi utilizat atunci când Iterator nu acceptă operația de eliminare |
30 | Jetoane de flux () | Returnează un flux de jetoane separate de delimitator de la scanerul curent |
31 | String toString () | Reprezentarea șirului de returnare a scanerului dat în prezent utilizat |
32 | IOException ioException () | Returnează ultima excepție IOE aruncată de obiectul scanabil lizibil |
33 | Stream findALL () | Returnează fluxul de rezultate ale meciului care se potrivește cu modelul dat |
3. 4 | String findInLine () | Găsiți următoarea apariție a modelului din șirul dat; ignoră delimitatorii |
35 | String findWithinHorizon () | Găsiți următoarea apariție a modelului din șirul dat; ignoră delimitatorii |
36 | Delimitator tipar () | Returnează modelul utilizat de scanerul curent |
37 | Aproape nul () | Închide scanerul |
38 | MatchResult match () | Returnează rezultatul de potrivire al ultimei operații de scanare |
39 | Local local () | Reveniți la locația scanerului curent |
Verifica Aici pentru a afla mai multe despre metodele scanerului.
Cum se utilizează scanerul în Java?
Acum, că ați văzut diferiții constructori și metode furnizate de clasa Scanner, să implementăm acum câteva exemple pentru a demonstra cum să utilizați clasa Scanner în Java.
Următoarea implementare arată utilizarea clasei Scanner pentru a citi intrarea din System.in adică intrarea standard.
Aici folosim un obiect System.in predefinit pentru a crea un obiect Scanner. Utilizatorul este apoi solicitat să introducă numele, clasa și procentajul. Toate aceste detalii sunt citite folosind obiectul clasei Scanner.
Rețineți metodele utilizate de obiectele Scanner pentru a citi diferite tipuri de intrare. Deoarece numele este un șir, obiectul Scanner folosește metoda next (). Pentru introducerea clasei, folosește nextInt () în timp ce pentru procentaj folosește nextFloat ().
În acest mod, puteți separa cu ușurință intrarea în timp ce citiți.
Ieșirea programului arată intrarea introdusă și informațiile afișate.
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); } }
Ieșire:
Șir de scaner
După cum sa menționat deja, puteți utiliza diverse obiecte predefinite în timp ce creați un obiect Scanner. Aceasta înseamnă că puteți citi fie intrarea din intrarea standard, fișiere și diverse canale I / O, fie din șiruri.
Când este utilizată o intrare de șir, puteți utiliza și expresii regulate în interiorul acesteia.
Următoarele exemple arată programul în care Scanner folosește un șir ca intrare. Această intrare este apoi scanată și jetoanele separate prin citirea fiecărui jeton.
Jetoanele citite sunt apoi afișate în ieșire.
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(); } }
Ieșire:
Închideți scanerul
Clasa Java Scanner folosește metoda „Close ()” pentru a închide scanerul. Clasa Scanner implementează, de asemenea, intern o interfață închisă și, prin urmare, dacă scanerul nu este deja închis, interfața de citit subiacentă invocă metoda sa de închidere.
Este o bună practică de programare să închideți în mod explicit scanerul folosind metoda Close () după ce ați terminat de utilizat.
Notă: Dacă obiectul Scanner este închis și se încearcă o căutare, rezultă „IllegalStateException”.
întrebări frecvente
Q # 1) Care este clasa Scanner în Java?
Răspuns: Clasa Scanner face parte din pachetul Java „java.util” și este utilizată pentru a citi intrarea diferitelor tipuri de date primitive, cum ar fi int, float, șiruri etc.
Nu am un gateway implicit
Q # 2) Care este diferența dintre metodele next () și nextLine () din clasa Scanner?
Răspuns: Metoda next () citește intrarea până la spațiu și plasează cursorul pe aceeași linie după citirea intrării. Metoda nextLine () citește totuși întreaga linie de intrare până la sfârșitul liniei, inclusiv spațiile.
Q # 3) Ce este hasNext () în Java?
Răspuns: Metoda hasNext () este una dintre metodele Java Scanner. Această metodă returnează adevărat dacă scanerul are un alt simbol în intrare.
Î # 4) Trebuie să închideți o clasă de scanare?
Răspuns: Este mai bine, dar nu obligatoriu, să închideți clasa Scanner ca și cum nu este închisă, interfața de citire subiacentă a clasei Scanner face treaba pentru dvs. Este posibil ca compilatorul să afișeze un avertisment dacă nu este închis.
Deci, ca o bună practică de programare, închideți întotdeauna scanerul.
Q # 5) Care este scopul „system.in” în clasa Scanner?
Răspuns: Utilizând „System.in” în clasa Scanner, îi permiteți scanerului să citească tastatura conectată la datele standard de intrare.
Concluzie
În acest tutorial, am văzut clasa Scanner și toate detaliile sale, inclusiv API-ul și implementarea. Clasa de scaner este utilizată pentru a citi datele de intrare dintr-o varietate de medii, cum ar fi intrarea standard, fișiere, canale IO, șiruri cu / fără expresii regulate etc.
Deși scanerul nu este un mod foarte eficient de a citi intrarea, acesta este unul dintre cele mai simple moduri. Scannerul vă permite să citiți intrarea diferitelor tipuri de date primitive, cum ar fi int, float, șiruri etc. Când utilizați șiruri ca obiect de intrare pentru clasa Scanner, puteți utiliza și expresii regulate.
Clasa Scanner vă permite, de asemenea, să citiți intrarea prin potrivirea unui model sau delimitator.
În concluzie, utilizarea clasei Scanner în Java rămâne cel mai simplu și preferat mod de a citi intrarea.
=> Consultați aici Ghidul perfect de instruire Java.
Lectură recomandată
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- Tutorial Java Array Class - java.util.Arrays Class cu exemple
- Tutorial JAVA pentru începători: peste 100 de tutoriale video Java practice
- Interfață Java și tutorial de clasă abstractă cu exemple
- Tutorial de reflecție Java cu exemple
- Matrice Jagged în Java - Tutorial cu exemple
- Tutorial Java Array Length cu exemple de cod
- Tutorial Java String | Metode Java String cu exemple