java scanner class tutorial with examples
I denne vejledning diskuterer vi, hvordan du importerer og bruger Java-scannerklassen sammen med dens forskellige metoder, scanner-API og eksempler:
Vi har allerede set de standard Input-Output-metoder, der bruges af Java til læsning / skrivning af data til standard I / O-enheder.
Java giver endnu en mekanisme til at læse brugerinput. Dette er Scannerklassen. Selvom det ikke er meget effektivt, er Scannerklasse den nemmeste og foretrukne måde at læse input i Java-programmer på.
=> Tjek ALLE Java-tutorials her.
Hvad du lærer:
Java-scannerklasse: Et dybtgående kig
Scannerklasse bruges for det meste til at scanne input og læse input af primitive (indbyggede) datatyper som int, decimal, dobbelt osv. Scannerklassen returnerer dybest set det tokeniserede input baseret på et afgrænsningsmønster. Således generelt, hvis du vil læse typen dt, så kan du bruge funktionen nextdt () til at læse input.
En scannerklasse implementerer grænseflader Iterator (string), Closeable og AutoCloseable.
Lad os udforske detaljerne i denne scannerklasse nu.
Importer scanner
Scannerklassen tilhører pakken “java.util”. Derfor skal du importere denne pakke som følger for at bruge scannerklassen i dit program.
importer java.util. *
ELLER
importere java.util.Scanner;
En af ovenstående udsagn importerer scannerklassen og dens funktionalitet i dit program.
Java-scannerklasse
Når Scannerklassen er importeret til Java-programmet, kan du bruge den til at læse input fra forskellige datatyper. Afhængigt af om du vil læse input fra standardinput eller fil eller kanal, kan du videregive det relevante foruddefinerede objekt til scannerobjektet.
Nedenfor er et grundlæggende eksempel på brug af scannerklasser.
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(); } }
Produktion:
I ovenstående program har vi leveret “System.in” (standardinput) som objekt, mens vi opretter et scannerklasseobjekt. Derefter læser vi en strengindgang fra standardindgangen.
Scanner API (konstruktører og metoder)
I dette afsnit vil vi udforske Scanner klasse API i detaljer. Scannerklassen indeholder forskellige overbelastede konstruktører til at imødekomme forskellige inputmetoder som System.in, filinput, sti osv.
Følgende tabel giver prototypen og beskrivelsen af hver af scannerklassekonstruktørerne.
bedste anime-steder at se anime gratis
Ingen | Prototype | Beskrivelse |
---|---|---|
7 | Scanner (sti kilde, streng charsetName) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne fil og producerer værdierne |
en | Scanner (InputStream-kilde) | Denne konstruktør konstruerer en ny scanner, der scanner den nye InputStream, kilde og producerer værdierne |
to | Scanner (InputStream-kilde, String charsetName) | Denne konstruktør konstruerer en ny scanner, der scanner den nye InputStream, kilde og producerer værdierne |
3 | Scanner (filkilde) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne fil og producerer værdierne |
4 | Scanner (Filkilde, String-tegnnavn) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne fil og producerer værdierne |
5 | Scanner (strengkilde) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne streng og producerer værdierne |
6 | Scanner (stykilde) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne fil og producerer værdierne |
8 | Scanner (læsbar kilde) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne kilde og producerer værdierne |
9 | Scanner (ReadableByteChannel kilde) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne kanal og producerer værdierne |
10 | Scanner (ReadableByteChannel kilde, streng charsetName) | Denne konstruktør konstruerer en ny scanner, der scanner den angivne kanal og producerer værdierne |
Ligesom konstruktører giver Scanner-klassen også adskillige metoder, der bruges til at scanne og læse input. Det giver forskellige boolske metoder, der giver dig mulighed for at kontrollere, om det næste token i input er et token af en bestemt datatype.
Bemærk, at for hver konstruktør kan du enten kun angive et argument med det foruddefinerede inputobjekt eller to argumenter, der består af foruddefineret inputobjekt og tegnsæt. I tilfælde af et argument antages standardtegnsættet.
Der er også metoder til at hente tokens af hver datatype.
Andre metoder inkluderer dem til at indstille landestandard, radix, matche mønstre, lukke scanner osv.
Følgende tabel giver prototypen og beskrivelsen af hver af de grundlæggende scannermetoder.
Ingen | Prototype | Beskrivelse |
---|---|---|
7 | Boolsk hasNextFloat () | Kontrollerer, om det næste token i Scanner-input er af flydetype |
en | Boolsk hasNext () | Returnerer sandt, hvis der er et andet token i scannerens input |
to | Boolsk hasNextBigDecimal () | Kontrollerer, om det næste token i Scanner-input er af bigDecimal-type. |
3 | Boolsk hasNextBigInteger () | Kontrollerer, om det næste token i Scanner-input er af bigInteger-typen |
4 | Boolsk hasNextBoolean () | Kontrollerer, om det næste token i Scanner-input er af boolsk type |
5 | Boolsk hasNextByte () | Kontrollerer, om det næste token i Scanner-input er af typen Byte |
6 | Boolsk hasNextDouble () | Kontrollerer, om det næste token i Scanner-input er af dobbelt type |
8 | Boolsk hasNextInt () | Kontrollerer, om det næste token i Scanner-input er af heltalstype |
9 | Boolsk hasNextLine () | Kontrollerer, om det næste token i Scanner-input er en anden linje |
10 | Boolsk hasNextLong () | Kontrollerer, om det næste token i Scanner-input er af lang type |
elleve | Boolsk hasNextShort () | Kontrollerer, om det næste token i Scanner-input er af kort type |
12 | Streng næste () | Scanner input til næste komplette token |
13 | BigDecimal næsteBigDecimal () | Scanner input til næste BigDecimal-token |
14 | BigInteger næsteBigInteger () | Scanner input til næste BigInteger-token |
femten | Boolsk næsteBoolsk () | Scanner input til det næste boolske token |
16 | Byte nextByte () | Scanner input til næste byte-token |
17 | Dobbelt næsteDobbelt () | Scanner input for det næste dobbelt token |
18 | Flyd næsteFloat () | Scanner input til næste float-token |
19 | Int næsteInt () | Scanner input for næste heltalstoken |
tyve | Streng næste linje () | Få inputstrengen sprunget fra scannerobjektet |
enogtyve | Lang næsteLang () | Scanner input for det næste lange heltal-token |
22 | Kort næsteKort () | Scanner input for næste korte heltalstoken |
2. 3 | Nulstilling af scanner () | Nulstil den scanner, der aktuelt er i brug |
24 | Spring scanner over () | Ignorer afgrænsere, og spring det input, der matcher det givne mønster, over |
25 | Scanner useDelimiter () | Indstil afgrænsningsmønsteret til det angivne mønster |
26 | Scanner useLocale () | Indstil Scanners-lokalitetsobjektet med det givne landestandard |
27 | Scanner useRadix () | Indstil den angivne radix som standardradix for Scanner |
28 | Int radix () | Returnerer standardradix for den aktuelle scanner |
29 | ugyldig fjern () | Kan bruges, når Iterator ikke understøtter fjernelse |
30 | Stream tokens () | Returnerer en strøm med skilletegn adskilte tokens fra den aktuelle scanner |
31 | String toString () | Returstrengrepræsentationen for den givne scanner, der aktuelt er i brug |
32 | IOException ioException () | Returnerer IOException, der sidst blev kastet af læsbar af Scanner-objekt |
33 | Stream findALL () | Returnerer strømmen af matchresultater, der matcher det givne mønster |
3. 4 | String findInLine () | Find den næste forekomst af mønsteret fra den givne streng; ignorerer afgrænsninger |
35 | String findWithinHorizon () | Find den næste forekomst af mønsteret fra den givne streng; ignorerer afgrænsninger |
36 | Mønsterafgrænser () | Returnerer det mønster, der bruges af den aktuelle scanner |
37 | Annulleres tæt () | Lukker scanneren |
38 | MatchResult-match () | Returnerer det matchende resultat af den sidste scanning |
39 | Lokal lokal () | Returner landestandarden for den aktuelle scanner |
Kontrollere her for at vide mere om scannermetoderne.
Sådan bruges scanneren i Java?
Nu hvor du har set de forskellige konstruktører og metoder, der leveres af Scanner-klassen, skal vi nu implementere nogle af eksemplerne for at demonstrere, hvordan du bruger Scanner-klassen i Java.
Den følgende implementering viser brugen af Scannerklasse til at læse input fra System.in dvs. standard input.
Her bruger vi et foruddefineret System.in-objekt til at oprette et Scanner-objekt. Brugeren bliver derefter bedt om at indtaste navn, klasse og procentdel. Alle disse detaljer læses ved hjælp af klasseobjektet Scanner.
Bemærk de metoder, der bruges af scannerobjekter til at læse forskellige typer input. Da navnet er en streng, bruger scannerobjektet den næste () metode. Til klasseinput bruger den nextInt (), mens den i procent bruger nextFloat ().
På denne måde kan du let adskille input under læsning.
Programmets output viser den indtastning, der indtastes, og de viste oplysninger.
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); } }
Produktion:
Scannerstreng
Som allerede nævnt kan du bruge forskellige foruddefinerede objekter, mens du opretter et scannerobjekt. Dette betyder, at du enten kan læse input fra standardinput, filer og forskellige I / O-kanaler eller fra strenge også.
Når der bruges en strenginput, kan du også bruge regulære udtryk inde i den.
De følgende eksempler viser programmet, hvor Scanner bruger en streng som input. Denne input scannes derefter, og tokens adskilles ved at læse hvert token.
De læst tokens vises derefter i output.
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(); } }
Produktion:
Luk scanner
Java Scanner-klasse bruger metoden “Luk ()” til at lukke scanneren. Scannerklassen implementerer også internt en lukbar grænseflade, og hvis scanneren ikke allerede er lukket, påkalder den underliggende læsbare grænseflade sin tætte metode.
Det er en god programmeringspraksis at eksplicit lukke scanneren ved hjælp af metoden Close (), når du er færdig med at bruge den.
Bemærk: Hvis scannerobjektet lukkes, og der forsøges at søge, resulterer det i “IllegalStateException”.
Ofte stillede spørgsmål
Q # 1) Hvad er scannerklassen i Java?
Svar: Scannerklassen er en del af Java-pakken 'java.util' og bruges til at læse input af forskellige primitive datatyper som int, float, strings osv.
konvertere youtube til mp4 gratis online
Q # 2) Hvad er forskellen mellem de næste () og nextLine () metoder i Scannerklassen?
Svar: Metoden next () læser input indtil mellemrum og placerer markøren på den samme linje efter læsning af input. Metoden nextLine () læser imidlertid hele inputlinjen til slutningen af linjen inklusive mellemrumene.
Q # 3) Hvad er hasNext () i Java?
Svar: Metoden hasNext () er en af Java Scanner-metoderne. Denne metode returnerer sandt, hvis scanneren har et andet token i input.
Spørgsmål nr. 4) Har du brug for at lukke en scannerklasse?
Svar: Det er bedre, men ikke obligatorisk at lukke Scannerklassen, som om den ikke er lukket. Den underliggende læsbare grænseflade i Scannerklassen gør jobbet for dig. Compileren kan dog blinke en advarsel, hvis den ikke er lukket.
Så som en god programmeringspraksis skal du altid lukke scanneren.
Spørgsmål nr. 5) Hvad er formålet med “system.in” i Scanner-klassen?
Svar: Ved at bruge “System.in” i Scannerklassen, giver du scanneren mulighed for at læse tastaturet, der er tilsluttet standardinddata.
Konklusion
I denne vejledning har vi set Scanner-klassen og alle dens detaljer inklusive API og implementering. Scannerklasse bruges til at læse inputdata fra en række medier som standardinput, filer, IO-kanaler, strenge med / uden regulære udtryk osv.
Selvom Scanner ikke er en meget effektiv måde at læse input på, er det en af de nemmeste måder. Scanneren giver dig mulighed for at læse input fra forskellige primitive datatyper som int, float, strings osv. Når du bruger strenge som inputobjekt til Scanner-klassen, kan du også bruge regulære udtryk med det.
Scannerklassen giver dig også mulighed for at læse input ved at matche et mønster eller en afgrænser.
Afslutningsvis er brugen af scannerklasse i Java den nemmeste og foretrukne måde at læse input på.
=> Tjek den perfekte Java-træningsvejledning her.
Anbefalet læsning
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler
- Java Array Class Tutorial - java.util.Arrays-klasse med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java-interface og abstrakt klasseundervisning med eksempler
- Java Reflection Tutorial med eksempler
- Jagged Array In Java - Vejledning med eksempler
- Java Array Length Tutorial med kodeeksempler
- Java String Tutorial | Java strengmetoder med eksempler