java scanner class tutorial with examples
In deze zelfstudie bespreken we hoe u de scannerklasse van Java kunt importeren en gebruiken, samen met de verschillende methoden, de scanner-API en voorbeelden:
We hebben al de standaard Input-Output-methoden gezien die door Java worden gebruikt voor het lezen / schrijven van gegevens naar de standaard I / O-apparaten.
Java biedt nog een ander mechanisme om gebruikersinvoer te lezen. Dit is de klasse Scanner. Hoewel niet erg efficiënt, is de Scannerklasse de gemakkelijkste en geprefereerde manier om invoer in Java-programma's te lezen.
Bekijk hier ALLE Java-tutorials.
Wat je leert:
Java Scanner Class: een diepgaande blik
Scannerklasse wordt meestal gebruikt om de invoer te scannen en de invoer te lezen van primitieve (ingebouwde) gegevenstypen zoals int, decimaal, dubbel, enz. De scannerklasse retourneert in feite de getokeniseerde invoer op basis van een bepaald scheidingstekenpatroon. Dus in het algemeen, als je het type dt wilt lezen, dan zou je de functie nextdt () kunnen gebruiken om de invoer te lezen.
Een scannerklasse implementeert de interfaces Iterator (string), Afsluitbare en AutoCloseable.
Laten we nu de details van deze Scannerklasse bekijken.
Scanner importeren
Scannerklasse behoort tot het pakket 'java.util'. Om de klasse Scanner in uw programma te gebruiken, moet u dit pakket als volgt importeren.
importeer java.util. *
OF
importeer java.util.Scanner;
Elk van de bovenstaande instructies importeert de Scanner-klasse en zijn functionaliteit in uw programma.
Java-scannerklasse
Nadat de Scanner-klasse in het Java-programma is geïmporteerd, kunt u deze gebruiken om de invoer van verschillende gegevenstypen te lezen. Afhankelijk van of u de invoer van de standaardinvoer of van een bestand of kanaal wilt lezen, kunt u het juiste vooraf gedefinieerde object doorgeven aan het Scanner-object.
Hieronder wordt een eenvoudig voorbeeld gegeven van het gebruik van de scannerklasse.
Uitgang:
In het bovenstaande programma hebben we de 'System.in' (standaardinvoer) als het object opgegeven tijdens het maken van een Scanner-klasseobject. Vervolgens lezen we een stringinvoer uit de standaardinvoer.
Scanner-API (constructeurs en methoden)
In deze sectie zullen we de Scanner class API in detail onderzoeken. De scannerklasse bevat verschillende overbelaste constructors voor verschillende invoermethoden zoals System.in, bestandsinvoer, pad, enz.
De volgende tabel geeft het prototype en de beschrijving van elk van de constructors van de Scanner-klasse.
wat is de netwerkbeveiligingssleutel voor draadloos
Niet doen | Voorlopig ontwerp | Omschrijving |
---|---|---|
7 | Scanner (padbron, tekenreeks charsetName) | Deze constructor construeert een nieuwe scanner die het opgegeven bestand scant en de waarden produceert |
1 | Scanner (InputStream-bron) | Deze constructor construeert een nieuwe scanner die de nieuwe InputStream-bron scant en de waarden produceert |
twee | Scanner (InputStream-bron, String charsetName) | Deze constructor construeert een nieuwe scanner die de nieuwe InputStream-bron scant en de waarden produceert |
3 | Scanner (bestandsbron) | Deze constructor construeert een nieuwe scanner die het opgegeven bestand scant en de waarden produceert |
4 | Scanner (Bestandsbron, String charsetName) | Deze constructor construeert een nieuwe scanner die het opgegeven bestand scant en de waarden produceert |
5 | Scanner (String-bron) | Deze constructor construeert een nieuwe scanner die de opgegeven tekenreeks scant en de waarden produceert |
6 | Scanner (padbron) | Deze constructor construeert een nieuwe scanner die het opgegeven bestand scant en de waarden produceert |
8 | Scanner (leesbare bron) | Deze constructor construeert een nieuwe scanner die de opgegeven bron scant en de waarden produceert |
9 | Scanner (ReadableByteChannel-bron) | Deze constructor construeert een nieuwe scanner die het opgegeven kanaal scant en de waarden produceert |
10 | Scanner (ReadableByteChannel-bron, String charsetName) | Deze constructor construeert een nieuwe scanner die het opgegeven kanaal scant en de waarden produceert |
Net als constructeurs biedt de klasse Scanner ook tal van methoden die worden gebruikt om de invoer te scannen en te lezen. Het biedt verschillende Booleaanse methoden waarmee u kunt controleren of het volgende token in de invoer een token van een bepaald gegevenstype is.
Merk op dat u voor elke constructor slechts één argument kunt opgeven met het vooraf gedefinieerde invoerobject of twee argumenten die bestaan uit een vooraf gedefinieerd invoerobject en tekenset. In het geval van één argument wordt uitgegaan van de standaardtekenset.
Er zijn ook methoden om tokens van elk gegevenstype op te halen.
Andere methoden zijn onder meer die om de locale, radix, matchpatronen in te stellen, de scanner te sluiten, enz.
De volgende tabel geeft het prototype en de beschrijving van elk van de basisscannermethoden.
Niet doen | Voorlopig ontwerp | Omschrijving |
---|---|---|
7 | Boolean hasNextFloat () | Controleert of het volgende token in de scannerinvoer van het type float is |
1 | Boolean hasNext () | Geeft true terug als er een ander token in de invoer van de scanner staat |
twee | Boolean hasNextBigDecimal () | Controleert of het volgende token in de scannerinvoer van het type bigDecimal is. |
3 | Boolean hasNextBigInteger () | Controleert of het volgende token in de scannerinvoer van het type bigInteger is |
4 | Boolean hasNextBoolean () | Controleert of het volgende token in de scannerinvoer van het Booleaanse type is |
5 | Boolean hasNextByte () | Controleert of het volgende token in de scannerinvoer van het type Byte is |
6 | Boolean hasNextDouble () | Controleert of het volgende token in de scannerinvoer van dubbel type is |
8 | Boolean hasNextInt () | Controleert of het volgende token in de scannerinvoer van het type integer is |
9 | Boolean hasNextLine () | Controleert of het volgende teken in de scannerinvoer een andere regel is |
10 | Boolean hasNextLong () | Controleert of het volgende token in de scannerinvoer van een lang type is |
elf | Boolean hasNextShort () | Controleert of het volgende token in de scannerinvoer van een kort type is |
12 | Tekenreeks volgende () | Scant de invoer voor het volgende volledige token |
13 | BigDecimal volgendeBigDecimal () | Scant de invoer voor het volgende BigDecimal-token |
14 | BigInteger volgendeBigInteger () | Scant de invoer voor het volgende BigInteger-token |
vijftien | Boolean nextBoolean () | Scant de invoer voor het volgende Booleaanse token |
16 | Byte volgendeByte () | Scant de invoer voor het volgende bytetoken |
17 | Dubbel volgendeDubbel () | Scant de invoer voor het volgende dubbele token |
18 | Float nextFloat () | Scant de invoer voor het volgende float-token |
19 | Int volgendeInt () | Scant de invoer voor het volgende integer-token |
twintig | Tekenreeks nextLine () | Haal de invoertekenreeks overgeslagen uit het Scanner-object |
eenentwintig | Lang volgende Lang () | Scant de invoer voor het volgende lange integer-token |
22 | Korte volgendeShort () | Scant de invoer voor het volgende korte integer-token |
2. 3 | Scanner resetten () | Reset de scanner die momenteel wordt gebruikt |
24 | Scanner overslaan () | Negeer scheidingstekens en sla de invoer over die overeenkomt met het gegeven patroon |
25 | Scanner useDelimiter () | Stel het begrenzingspatroon in op het opgegeven patroon |
26 | Scanner useLocale () | Stel het object Scanners locale in met de opgegeven landinstelling |
27 | Scanner useRadix () | Stel de opgegeven radix in als de standaard radix voor Scanner |
28 | Int radix () | Retourneert de standaardradix van de huidige scanner |
29 | leegte verwijderen () | Kan worden gebruikt als Iterator de verwijderbewerking niet ondersteunt |
30 | Stream-tokens () | Retourneert een stroom van door scheidingstekens gescheiden tokens van de huidige scanner |
31 | String toString () | De retourstringweergave van de opgegeven scanner die momenteel in gebruik is |
32 | IOException ioException () | Retourneert de IO-uitzondering die het laatst is gegenereerd door het leesbare Scanner-object |
33 | Stream findALL () | Retourneert de stroom overeenkomstresultaten die overeenkomen met het opgegeven patroon |
3. 4 | Tekenreeks findInLine () | Zoek het volgende exemplaar van het patroon uit de opgegeven string; negeert scheidingstekens |
35 | Tekenreeks findWithinHorizon () | Zoek het volgende exemplaar van het patroon uit de opgegeven string; negeert scheidingstekens |
36 | Patroonscheidingsteken () | Retourneert het patroon dat door de huidige scanner wordt gebruikt |
37 | Leegte sluiten () | Sluit de scanner |
38 | MatchResult match () | Retourneert het overeenkomende resultaat van de laatste scanbewerking |
39 | Lokaal lokaal () | Retourneert de landinstelling van de huidige scanner |
Controleren hier voor meer informatie over de scannermethoden.
Hoe de scanner in Java te gebruiken?
Nu u de verschillende constructors en methoden van de Scanner-klasse hebt gezien, gaan we nu enkele voorbeelden implementeren om te demonstreren hoe u de Scanner-klasse in Java kunt gebruiken.
De volgende implementatie toont het gebruik van de Scanner-klasse om invoer van System.in te lezen, d.w.z. de standaardinvoer.
Hier gebruiken we een vooraf gedefinieerd System.in-object om een Scanner-object te maken. De gebruiker wordt vervolgens gevraagd om de naam, klasse en percentage in te voeren. Al deze details worden gelezen met het klasseobject Scanner.
Let op de methoden die door Scanner-objecten worden gebruikt om verschillende soorten invoer te lezen. Omdat de naam een tekenreeks is, gebruikt het Scanner-object de methode next (). Voor klasseninvoer gebruikt het nextInt (), terwijl het voor percentage nextFloat () gebruikt.
Op deze manier kunt u tijdens het lezen eenvoudig de invoer scheiden.
De uitvoer van het programma toont de invoer die wordt ingevoerd en de weergegeven informatie.
Uitgang:
Scanner-tekenreeks
Zoals eerder vermeld, kunt u verschillende vooraf gedefinieerde objecten gebruiken tijdens het maken van een scannerobject. Dit betekent dat u de invoer kunt lezen van standaardinvoer, bestanden en verschillende I / O-kanalen of ook van strings.
Wanneer een stringinvoer wordt gebruikt, kunt u er ook reguliere expressies in gebruiken.
De volgende voorbeelden tonen het programma waarin Scanner een string als invoer gebruikt. Deze invoer wordt vervolgens gescand en tokens worden gescheiden door elk token te lezen.
De gelezen tokens worden vervolgens weergegeven in de uitvoer.
Uitgang:
Sluit de scanner
De Java Scanner-klasse gebruikt de 'Close ()' - methode om de scanner te sluiten. De klasse Scanner implementeert ook intern een Afsluitbare interface en als de Scanner dus nog niet is gesloten, roept de onderliggende Leesbare interface de afsluitmethode op.
Het is een goede programmeerpraktijk om de scanner expliciet te sluiten met de methode Close () als u klaar bent met het gebruik ervan.
Notitie: Als het Scanner-object is gesloten en er wordt geprobeerd te zoeken, resulteert dit in 'IllegalStateException'.
Veel Gestelde Vragen
V # 1) Wat is de klasse Scanner in Java?
Antwoord: De Scanner-klasse is een onderdeel van het 'java.util' -pakket van Java en wordt gebruikt om invoer van verschillende primitieve gegevenstypen zoals int, float, strings, enz. Te lezen.
wat zijn de beste e-mailproviders
V # 2) Wat is het verschil tussen de methoden next () en nextLine () van de klasse Scanner?
Antwoord: De methode next () leest invoer tot spatie en plaatst de cursor op dezelfde regel na het lezen van invoer. De methode nextLine () leest echter de hele invoerregel tot het einde van de regel inclusief de spaties.
V # 3) Wat is hasNext () in Java?
Antwoord: De methode hasNext () is een van de Java Scanner-methoden. Deze methode retourneert true als de scanner een ander token in de invoer heeft.
V # 4) Moet u een Scannerklasse sluiten?
Antwoord: Het is beter, maar niet verplicht, om de Scanner-klasse te sluiten alsof deze niet gesloten is, de onderliggende Readable-interface van de Scanner-klasse doet het werk voor u. De compiler kan echter een waarschuwing knipperen als deze niet is gesloten.
Sluit de scanner daarom altijd als een goede manier van programmeren.
V # 5) Wat is het doel van 'system.in' in de Scanner-klasse?
Antwoord: Door 'System.in' te gebruiken in de Scanner-klasse, staat u de Scanner toe om het toetsenbord te lezen dat is aangesloten op standaard invoergegevens.
Gevolgtrekking
In deze tutorial hebben we de Scanner-klasse en al zijn details gezien, inclusief de API en implementatie. Scannerklasse wordt gebruikt om invoergegevens van verschillende media te lezen, zoals standaardinvoer, bestanden, IO-kanalen, strings met / zonder reguliere expressies, enz.
Hoewel Scanner geen erg efficiënte manier is om invoer te lezen, is het een van de gemakkelijkste manieren. Met de Scanner kunt u de invoer van verschillende primitieve gegevenstypen lezen, zoals int, float, strings, enz. Als u strings gebruikt als invoerobject voor de Scanner-klasse, kunt u er ook reguliere expressies mee gebruiken.
Met de klasse Scanner kunt u ook invoer lezen door een patroon of scheidingsteken aan te passen.
Tot slot blijft het gebruik van de Scannerklasse in Java de gemakkelijkste en geprefereerde manier om invoer te lezen.
Bekijk hier de perfecte Java-trainingsgids.
Aanbevolen literatuur
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden
- Zelfstudie voor Java-array-klassen - java.util.Arrays-klasse met voorbeelden
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Java-interface en abstracte les met voorbeelden
- Zelfstudie over reflectie in Java met voorbeelden
- Jagged Array in Java - Tutorial met voorbeelden
- Zelfstudie over Java-array-lengte met codevoorbeelden
- Zelfstudie voor Java String | Java String-methoden met voorbeelden