java scanner class tutorial with examples
En aquest tutorial, analitzarem com importar i utilitzar la classe d'escàner de Java juntament amb els seus diversos mètodes, API d'escàner i exemples:
Ja hem vist els mètodes estàndard d'entrada-sortida que utilitza Java per llegir / escriure dades als dispositius d'E / S estàndard.
Java proporciona un altre mecanisme per llegir l'entrada de l'usuari. Aquesta és la classe Scanner. Tot i que no és molt eficient, la classe d’escàner és la forma més fàcil i preferida de llegir les entrades dels programes Java.
=> Consulteu TOTS els tutorials de Java aquí.
Què aprendreu:
Classe d’escàner Java: una mirada en profunditat
La classe d'escàner s'utilitza principalment per escanejar l'entrada i llegir l'entrada de tipus de dades primitius (integrats) com int, decimal, doble, etc. Així, en general, si voleu llegir el tipus dt, podeu utilitzar la funció nextdt () per llegir l'entrada.
Una classe d’escàner implementa interfícies Iterator (string), Closeable i AutoCloseable.
Explorem ara els detalls d’aquesta classe d’escàner.
Importa l’escàner
La classe d'escàner pertany al paquet 'java.util'. Per tant, per utilitzar la classe Scanner al vostre programa, heu d’importar aquest paquet de la manera següent.
import java.util. *
O
import java.util.Scanner;
Qualsevol de les afirmacions anteriors importarà la classe Scanner i la seva funcionalitat al programa.
Classe d’escàner Java
Un cop importada la classe Scanner al programa Java, podeu utilitzar-la per llegir l'entrada de diversos tipus de dades. Segons si voleu llegir l'entrada de l'entrada o fitxer o canal estàndard, podeu passar l'objecte predefinit adequat a l'objecte Scanner.
A continuació es mostra un exemple bàsic d'ús de la classe de l'escàner.
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(); } }
Sortida:
Al programa anterior, hem proporcionat el 'System.in' (entrada estàndard) com a objecte mentre es crea un objecte de classe Scanner. A continuació, llegim una entrada de cadena de l'entrada estàndard.
API de l'escàner (constructors i mètodes)
En aquesta secció, explorarem l'API de la classe Scanner amb detall. La classe d’escàner conté diversos constructors sobrecarregats per adaptar-se a diversos mètodes d’entrada com System.in, entrada de fitxers, ruta, etc.
La taula següent proporciona el prototip i la descripció de cadascun dels constructors de la classe Scanner.
inserció codi d'ordenació c ++
no | Prototip | Descripció |
---|---|---|
7 | Escàner (origen del camí, stringsetsetName) | Aquest constructor construeix un nou escàner que analitza el fitxer especificat i produeix els valors |
1 | Escàner (font InputStream) | Aquest constructor construeix un nou escàner que escaneja el nou InputStream, la font i produeix els valors |
2 | Escàner (font InputStream, String charsetName) | Aquest constructor construeix un nou escàner que escaneja el nou InputStream, la font i produeix els valors |
3 | Escàner (font del fitxer) | Aquest constructor construeix un nou escàner que analitza el fitxer especificat i produeix els valors |
4 | Escàner (font del fitxer, nom de conjunt de caràcters de cadena) | Aquest constructor construeix un nou escàner que analitza el fitxer especificat i produeix els valors |
5 | Escàner (font de cadena) | Aquest constructor construeix un nou escàner que analitza la cadena especificada i produeix els valors |
6 | Escàner (font del camí) | Aquest constructor construeix un nou escàner que analitza el fitxer especificat i produeix els valors |
8 | Escàner (font llegible) | Aquest constructor construeix un nou escàner que analitza la font especificada i produeix els valors |
9 | Escàner (font ReadableByteChannel) | Aquest constructor construeix un nou escàner que analitza el canal especificat i produeix els valors |
10 | Escàner (font ReadableByteChannel, String charsetName) | Aquest constructor construeix un nou escàner que analitza el canal especificat i produeix els valors |
Igual que els constructors, la classe Scanner també proporciona nombrosos mètodes que s’utilitzen per escanejar i llegir l’entrada. Proporciona diversos mètodes booleans que permeten comprovar si el següent testimoni de l'entrada és un testimoni d'un tipus de dades concret.
Tingueu en compte que, per a cada constructor, només podeu proporcionar un argument amb l'objecte d'entrada predefinit o dos arguments que consten d'objectes d'entrada i conjunt de caràcters predefinits. En el cas d’un argument, s’assumeix el conjunt de caràcters per defecte.
També hi ha mètodes per recuperar fitxes de cada tipus de dades.
Altres mètodes inclouen aquells per establir configuracions regionals, ràdix, patrons de coincidència, tancar l'escàner, etc.
La taula següent proporciona el prototip i la descripció de cadascun dels mètodes bàsics de l’escàner.
no | Prototip | Descripció |
---|---|---|
7 | Booleà hasNextFloat () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus flotant |
1 | Booleà hasNext () | Retorna cert si hi ha un altre testimoni a l'entrada de l'escàner |
2 | Booleà hasNextBigDecimal () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus bigDecimal. |
3 | Booleà hasNextBigInteger () | Comprova si el següent testimoni de l'entrada de l'escàner és del tipus bigInteger |
4 | Booleà hasNextBoolean () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus booleà |
5 | Booleà hasNextByte () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus Byte |
6 | Booleà hasNextDouble () | Comprova si el següent testimoni de l'entrada de l'escàner és de doble tipus |
8 | Booleà hasNextInt () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus enter |
9 | Booleà hasNextLine () | Comprova si el següent testimoni de l'entrada de l'escàner és una altra línia |
10 | Booleà hasNextLong () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus llarg |
11 | Booleà hasNextShort () | Comprova si el següent testimoni de l'entrada de l'escàner és de tipus curt |
12 | String next () | Analitza l’entrada del següent testimoni complet |
13 | BigDecimal nextBigDecimal () | Analitza l'entrada del següent testimoni BigDecimal |
14 | BigInteger nextBigInteger () | Analitza l'entrada del següent testimoni BigInteger |
15 | Booleà següent Booleà () | Analitza l'entrada del següent testimoni booleà |
16 | Byte nextByte () | Analitza l'entrada del següent testimoni de bytes |
17 | Doble següent Doble () | Analitza l'entrada del següent testimoni doble |
18 | Float nextFloat () | Analitza l'entrada del següent testimoni flotant |
19 | Int nextInt () | Analitza l'entrada del següent testimoni enter |
20 | Cadena nextLine () | Feu ometre la cadena d'entrada de l'objecte Scanner |
21 | Long nextLong () | Analitza l'entrada del següent testimoni llarg llarg |
22 | Short nextShort () | Analitza l'entrada del següent testimoni curt curt |
23 | Restabliment de l'escàner () | Restableix l’escàner que s’utilitza actualment |
24 | Salt de l'escàner () | Ignoreu els delimitadors i ometeu l'entrada que coincideix amb el patró donat |
25 | Ús de l'escàner: Delimiter () | Establiu el patró de delimitació al patró especificat |
26 | Ús de l'escàner Local () | Configureu l'objecte regional d'escàners amb la configuració regional especificada |
27 | Ús de l'escàner: Radix () | Establiu el radi especificat com a radi predeterminat per a l’escàner |
28 | Int radix () | Retorna el radi predeterminat de l'escàner actual |
29 | void remove () | Es pot utilitzar quan Iterator no admet l'operació d'eliminació |
30 | Fitxes de reproducció () | Retorna un flux de fitxes separades del delimitador de l'escàner actual |
31 | String toString () | Representació de cadena de retorn de l’escàner donat que s’utilitza actualment |
32 | IOException ioException () | Retorna l'última excepció IOE llançada per l'objecte escàner llegible |
33 | Stream findALLALL () | Retorna el flux de resultats de coincidència que coincideixen amb el patró donat |
34 | Cadena findInLine () | Cerqueu la següent ocurrència del patró de la cadena donada; ignora els delimitadors |
35 | Cadena findWithinHorizon () | Cerqueu la següent ocurrència del patró de la cadena donada; ignora els delimitadors |
36 | Delimitador de patrons () | Retorna el patró utilitzat per l'escàner actual |
37 | Buit tancat () | Tanca l’escàner |
38 | Partit MatchResult () | Retorna el resultat coincident de l'última operació d'escaneig |
39 | Local local () | Retorna la configuració regional de l'escàner actual |
Comprovar aquí per obtenir més informació sobre els mètodes de l'escàner.
Com s'utilitza l'escàner a Java?
Ara que heu vist els diversos constructors i mètodes proporcionats per la classe Scanner, implementem ara alguns exemples per demostrar com utilitzar la classe Scanner a Java.
La següent implementació mostra l’ús de la classe de l’escàner per llegir l’entrada de System.in, és a dir, l’entrada estàndard.
Aquí fem servir un objecte System.in predefinit per crear un objecte Scanner. A continuació, se li demana a l'usuari que introdueixi el nom, la classe i el percentatge. Tots aquests detalls es llegeixen mitjançant l’objecte de la classe Scanner.
Tingueu en compte els mètodes que fan servir els objectes de l’escàner per llegir diferents tipus d’entrada. Com que el nom és una cadena, l'objecte Scanner utilitza el mètode next (). Per a l’entrada de classe, utilitza nextInt () mentre que per percentatge utilitza nextFloat ().
D'aquesta manera, podeu segregar fàcilment l'entrada mentre llegiu.
La sortida del programa mostra l'entrada introduïda i la informació que es mostra.
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); } }
Sortida:
Cadena d’escàner
Com ja s'ha esmentat, podeu utilitzar diversos objectes predefinits mentre creeu un objecte Scanner. Això significa que podeu llegir l'entrada des de l'entrada estàndard, fitxers i diversos canals d'E / S o de cadenes.
Quan s'utilitza una entrada de cadena, també podeu utilitzar expressions regulars al seu interior.
Els exemples següents mostren el programa en què Scanner utilitza una cadena com a entrada. A continuació, s’escaneja aquesta entrada i es separen les fitxes llegint cada testimoni.
Les fitxes llegides es mostren a la sortida.
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(); } }
Sortida:
Tanca l’escàner
La classe Java Scanner utilitza el mètode 'Close ()' per tancar l'escàner. La classe de l'escàner també implementa internament una interfície tancable i, per tant, si l'escàner encara no està tancat, la interfície llegible subjacent invoca el seu mètode de tancament.
És una bona pràctica de programació tancar explícitament l’escàner mitjançant el mètode Close () un cop hàgiu acabat d’utilitzar-lo.
Nota: Si l'objecte de l'escàner està tancat i s'intenta fer una cerca, es produirà 'IllegalStateException'.
Preguntes freqüents
P # 1) Què és la classe Scanner a Java?
Resposta: La classe Scanner forma part del paquet “java.util” de Java i s’utilitza per llegir entrades de diferents tipus de dades primitives com int, float, cadenes, etc.
el millor programari de recuperació de fitxers de Windows 10
Q # 2) Quina diferència hi ha entre els mètodes next () i nextLine () de la classe Scanner?
Resposta: El mètode next () llegeix l'entrada fins a l'espai i col·loca el cursor a la mateixa línia després de llegir l'entrada. No obstant això, el mètode nextLine () llegeix tota la línia d'entrada fins al final de la línia, inclosos els espais.
P # 3) Què és hasNext () a Java?
Resposta: El mètode hasNext () és un dels mètodes de Java Scanner. Aquest mètode torna cert si l'escàner té un altre testimoni a l'entrada.
Q # 4) Necessiteu tancar una classe d'escàner?
Resposta: És millor, però no és obligatori, tancar la classe de l'escàner com si no estigués tancada, la interfície llegible subjacent de la classe de l'escàner us farà la feina. El compilador pot parpellejar algun advertiment si no està tancat.
Per tant, com a bona pràctica de programació, tanqueu sempre l’escàner.
P # 5) Quin és el propòsit de 'system.in' a la classe Scanner?
Resposta: En utilitzar “System.in” a la classe de l’escàner, permetreu que l’escàner llegeixi el teclat connectat a les dades d’entrada estàndard.
Conclusió
En aquest tutorial, hem vist la classe Scanner i tots els seus detalls, incloses l'API i la implementació. La classe d’escàner s’utilitza per llegir dades d’entrada de diversos suports, com ara entrada estàndard, fitxers, canals d’IO, cadenes amb o sense expressions regulars, etc.
Tot i que l’escàner no és una manera molt eficient de llegir les entrades, és una de les maneres més senzilles. L'escàner us permet llegir l'entrada de diversos tipus de dades primitives com int, float, cadenes, etc. Quan utilitzeu cadenes com a objecte d'entrada per a la classe d'escàner, també podeu utilitzar expressions regulars.
La classe Escàner també us permet llegir les entrades coincidint amb algun patró o delimitador.
En conclusió, l’ús de la classe d’escàner a Java continua sent la forma més fàcil i preferida de llegir l’entrada.
=> Consulteu la guia de formació Java perfecta aquí.
Lectura recomanada
- Què és Java Vector | Tutorial de Java Vector Class amb exemples
- Tutorial de classe Java Array: classe java.util.Arrays amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Interfície Java i tutoria de classes abstractes amb exemples
- Tutorial de reflexió de Java amb exemples
- Matriu irregular a Java: tutorial amb exemples
- Tutorial de longitud de matriu de Java amb exemples de codi
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples