java scanner class tutorial with examples
V tomto výučbe sa budeme zaoberať Ako importovať a používať triedu skenera Java spolu s jej rôznymi metódami, rozhraním Scanner API a príkladmi:
Už sme videli štandardné metódy vstupu a výstupu, ktoré Java používa na čítanie / zápis dát na štandardné I / O zariadenia.
Java poskytuje ešte ďalší mechanizmus na čítanie vstupov používateľov. Toto je trieda skenerov. Aj keď to nie je veľmi efektívne, trieda skenera je najjednoduchší a preferovaný spôsob čítania vstupu v programoch Java.
=> Skontrolujte VŠETKY návody Java tu.
Čo sa dozviete:
Trieda skenera Java: Hĺbkový vzhľad
Trieda skenera sa väčšinou používa na skenovanie vstupu a na čítanie vstupu primitívnych (zabudovaných) dátových typov, ako sú int, desatinné miesta, dvojité atď. Trieda skenera v zásade vracia tokenizovaný vstup na základe nejakého oddeľovača. Všeobecne teda, ak chcete čítať typ dt, môžete na načítanie vstupu použiť funkciu nextdt ().
Trieda skenera implementuje rozhrania Iterator (string), Closeable a AutoCloseable.
Pozrime sa teraz na podrobnosti tejto triedy skenerov.
Importovať skener
Trieda skenera patrí do balíka „java.util“. Preto, aby ste vo svojom programe používali triedu Scanner, musíte tento balík importovať nasledujúcim spôsobom.
import java.util. *
ALEBO
import java.util.Scanner;
Ktorékoľvek z vyššie uvedených príkazov importuje triedu Scanner a jej funkčnosť do vášho programu.
Trieda skenerov Java
Po importovaní triedy Scanner do programu Java ju môžete použiť na načítanie vstupu rôznych dátových typov. V závislosti od toho, či chcete načítať vstup zo štandardného vstupu alebo zo súboru alebo z kanála, môžete odovzdať príslušný preddefinovaný objekt objektu Scanner.
Ďalej je uvedený základný príklad použitia triedy skenerov.
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(); } }
Výkon:
Vo vyššie uvedenom programe sme pri vytváraní objektu triedy Scanner poskytli ako objekt „System.in“ (štandardný vstup). Potom načítame reťazcový vstup zo štandardného vstupu.
Scanner API (Constructors & Methods)
V tejto časti podrobne preskúmame rozhranie API triedy Scanner. Trieda skenera obsahuje rôzne preťažené konštruktory, ktoré vyhovejú rôznym metódam vstupu, ako je System.in, vstup do súboru, cesta atď.
V nasledujúcej tabuľke je uvedený prototyp a popis každého z konštruktérov triedy Scanner.
sql interview otázky a odpovede pre nováčikov
Nie | Prototyp | Popis |
---|---|---|
7 | Skener (zdroj cesty, reťazec charsetName) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný súbor a vytvára hodnoty |
1 | Skener (zdroj InputStream) | Tento konštruktor skonštruuje nový skener, ktorý skenuje nový InputStream, zdroj a produkuje hodnoty |
dva | Skener (zdroj InputStream, reťazec charsetName) | Tento konštruktor skonštruuje nový skener, ktorý skenuje nový InputStream, zdroj a produkuje hodnoty |
3 | Skener (zdroj súboru) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný súbor a vytvára hodnoty |
4 | Skener (zdroj súboru, reťazec charsetName) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný súbor a vytvára hodnoty |
5 | Skener (zdroj reťazcov) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný reťazec a vytvára hodnoty |
6 | Skener (zdroj cesty) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný súbor a vytvára hodnoty |
8 | Skener (čitateľný zdroj) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný zdroj a vytvára hodnoty |
9 | Skener (zdroj ReadableByteChannel) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný kanál a vytvára hodnoty |
10 | Skener (zdroj ReadableByteChannel, reťazec charsetName) | Tento konštruktor skonštruuje nový skener, ktorý skenuje zadaný kanál a vytvára hodnoty |
Rovnako ako konštruktory, aj trieda Scanner poskytuje početné metódy, ktoré sa používajú na skenovanie a čítanie vstupu. Poskytuje rôzne boolovské metódy, ktoré vám umožňujú skontrolovať, či ďalší token na vstupe je token konkrétneho dátového typu.
Upozorňujeme, že pre každý konštruktor môžete poskytnúť iba jeden argument s preddefinovaným vstupným objektom alebo dva argumenty pozostávajúce z preddefinovaného vstupného objektu a znakovej sady. V prípade jedného argumentu sa predpokladá predvolená znaková sada.
Existujú tiež metódy na získanie tokenov každého dátového typu.
Medzi ďalšie metódy patrí nastavenie miestneho nastavenia, radix, porovnávanie vzorov, zatvorenie skenera atď.
V nasledujúcej tabuľke je uvedený prototyp a popis každej zo základných metód skenovania.
Nie | Prototyp | Popis |
---|---|---|
7 | Boolean hasNextFloat () | Skontroluje, či je nasledujúci token vo vstupe skenera floatového typu |
1 | Boolean hasNext () | Vráti hodnotu true, ak je vo vstupe skenera ďalší token |
dva | Boolean hasNextBigDecimal () | Skontroluje, či je nasledujúci token vo vstupe skenera typu bigDecimal. |
3 | Boolean hasNextBigInteger () | Skontroluje, či je ďalší token vo vstupe skenera typu bigInteger |
4 | Boolean hasNextBoolean () | Skontroluje, či je nasledujúci token vo vstupe skenera boolovský typ |
5 | Boolean hasNextByte () | Skontroluje, či je ďalší token vo vstupe skenera typu Byte |
6 | Boolean hasNextDouble () | Skontroluje, či je nasledujúci token vo vstupe skenera dvojitého typu |
8 | Boolean hasNextInt () | Skontroluje, či je nasledujúci token vo vstupe skenera celočíselného typu |
9 | Boolean hasNextLine () | Skontroluje, či ďalší token vo vstupe skenera predstavuje iný riadok |
10 | Boolean hasNextLong () | Skontroluje, či je nasledujúci token vo vstupe skenera dlhý |
jedenásť | Boolean hasNextShort () | Skontroluje, či je nasledujúci token vo vstupe skenera krátky |
12 | Reťazec next () | Vyhľadá ďalší úplný token |
13 | BigDecimal nextBigDecimal () | Naskenuje vstup na ďalší token BigDecimal |
14 | BigInteger nextBigInteger () | Naskenuje vstup pre ďalší token BigInteger |
pätnásť | Boolean nextBoolean () | Skenuje vstup pre ďalší boolovský token |
16 | Byte nextByte () | Naskenuje vstup pre ďalší bajtový token |
17 | Double nextDouble () | Skenuje vstup pre ďalší Double token |
18 | Float nextFloat () | Naskenuje vstup pre ďalší floatový token |
19 | Int nextInt () | Skenuje vstup pre ďalší celočíselný token |
dvadsať | Reťazec nextLine () | Získajte vstupný reťazec preskočený z objektu Scanner |
dvadsaťjeden | Long nextLong () | Skenuje vstup pre ďalší token dlhých celých čísel |
22 | Krátke ďalšieKrátke () | Skenuje vstup pre ďalší krátky celočíselný token |
2. 3 | Reset skenera () | Resetujte aktuálne používaný skener |
24 | Preskočenie skenera () | Ignorujte oddeľovače a preskočte vstup, ktorý sa zhoduje s daným vzorom |
25 | Použitie skenera Oddeľovač () | Nastavte vymedzovací vzor na zadaný vzor |
26 | Skener useLocale () | Nastavte objekt miestneho nastavenia Scanners na dané miestne nastavenie |
27 | Použitie skenera Radix () | Nastavte zadaný radix ako predvolený radix pre Scanner |
28 | Int radix () | Vráti predvolený radix aktuálneho skenera |
29 | void remove () | Môže sa použiť, keď Iterátor nepodporuje operáciu odstránenia |
30 | Streamovať tokeny () | Vráti prúd tokenov oddelených oddeľovačom z aktuálneho skenera |
31 | String toString () | Reprezentácia návratového reťazca daného skenera, ktorý sa práve používa |
32 | IOException ioException () | Vráti IOException naposledy vyvolanú čitateľným objektom Scanner |
33 | Nájsť stream ALL () | Vráti prúd výsledkov zhody, ktoré zodpovedajú danému vzoru |
3. 4 | Reťazec findInLine () | Nájdite ďalší výskyt vzoru z daného reťazca; ignoruje oddeľovače |
35 | Reťazec findWithinHorizon () | Nájdite ďalší výskyt vzoru z daného reťazca; ignoruje oddeľovače |
36 | Oddeľovač vzorov () | Vráti vzor používaný aktuálnym skenerom |
37 | Zrušiť zatvorenie () | Zatvára skener |
38 | MatchResult match () | Vráti výsledok zhody poslednej operácie skenovania |
39 | Miestne miestne () | Vrátiť miestne nastavenie aktuálneho skenera |
Skontrolujte tu Ak chcete získať viac informácií o metódach skenovania.
Ako používať skener v Jave?
Teraz, keď ste videli rôzne konštruktory a metódy poskytované triedou Scanner, poďme si teraz implementovať niektoré z príkladov, ktoré nám ukážu, ako používať triedu Scanner v jazyku Java.
Nasledujúca implementácia ukazuje použitie triedy Scanner na čítanie vstupu zo System.in, tj. Štandardného vstupu.
Tu používame preddefinovaný objekt System.in na vytvorenie objektu Scanner. Používateľ je potom vyzvaný na zadanie názvu, triedy a percenta. Všetky tieto podrobnosti sa načítajú pomocou objektu triedy Scanner.
Všimnite si metódy, ktoré používajú objekty skenera na čítanie rôznych typov vstupu. Pretože sa jedná o reťazec, objekt Scanner používa metódu next (). Na vstup do triedy používa nextInt (), zatiaľ čo na percentá používa nextFloat ().
Týmto spôsobom môžete ľahko oddeliť vstup pri čítaní.
Na výstupe z programu sa zobrazuje zadaný vstup a zobrazené informácie.
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); } }
Výkon:
Reťazec skenera
Ako už bolo spomenuté, pri vytváraní objektu Scanner môžete používať rôzne preddefinované objekty. To znamená, že môžete čítať vstup zo štandardného vstupu, súborov a rôznych I / O kanálov alebo aj z reťazcov.
Keď sa použije reťazcový vstup, môžete v ňom použiť aj regulárne výrazy.
Nasledujúce príklady ukazujú program, v ktorom program Scanner používa ako vstup reťazec. Tento vstup sa potom naskenuje a tokeny sa oddelia prečítaním každého tokenu.
Načítané tokeny sa potom zobrazia na výstupe.
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(); } }
Výkon:
Zatvorte skener
Trieda skenera Java používa na zatvorenie skenera metódu „Close ()“. Trieda skenera tiež interne implementuje uzatvárateľné rozhranie, a preto ak skener ešte nie je uzavretý, základné rozhranie pre čítanie vyvolá svoju blízku metódu.
Je dobrým programovacím postupom, keď skener výslovne zavriete pomocou metódy Close (), akonáhle ho skončíte.
Poznámka: Ak je objekt skenera zatvorený a dôjde k pokusu o vyhľadávanie, bude to mať za následok „IllegalStateException“.
často kladené otázky
Otázka č. 1) Čo je trieda skenerov v Jave?
Odpoveď: Trieda Scanner je súčasťou balíka Java „java.util“ a používa sa na čítanie vstupov rôznych primitívnych dátových typov, ako sú int, float, reťazce atď.
ako obrátiť pole
Otázka 2) Aký je rozdiel medzi metódami next () a nextLine () triedy Scanner?
Odpoveď: Metóda next () číta vstup do medzery a po načítaní vstupu umiestni kurzor na rovnaký riadok. Metóda nextLine () však načíta celý riadok vstupu až do konca riadku vrátane medzier.
Otázka č. 3) Čo je hasNext () v Jave?
Odpoveď: Metóda hasNext () je jednou z metód Java Scannera. Táto metóda vráti hodnotu true, ak má skener vo vstupe iný token.
Otázka č. 4) Potrebujete zavrieť triedu skenerov?
Odpoveď: Je lepšie, ale nie povinné, zavrieť triedu skenera, akoby nebola zatvorená, základné rozhranie pre čítanie triedy skenera urobí prácu za vás. Ak nie je kompilátor zavretý, môže vydať nejaké varovanie.
Ako dobrý programovací postup skener vždy zavrite.
Otázka č. 5) Aký je účel súboru „system.in“ v triede skenerov?
Odpoveď: Použitím súboru „System.in“ v triede skenera umožňujete skeneru čítať klávesnicu pripojenú k štandardným vstupným údajom.
Záver
V tomto tutoriáli sme videli triedu Scanner a všetky jej podrobnosti vrátane API a implementácie. Trieda skenera sa používa na čítanie vstupných údajov z rôznych médií, ako sú štandardné vstupy, súbory, kanály IO, reťazce s / bez regulárnych výrazov atď.
Aj keď skener nie je veľmi efektívny spôsob čítania vstupu, je to jeden z najjednoduchších spôsobov. Scanner vám umožňuje čítať vstup rôznych primitívnych dátových typov, ako sú int, float, reťazce atď. Keď používate reťazce ako vstupný objekt pre triedu Scanner, môžete s nimi použiť aj regulárne výrazy.
Trieda Skener tiež umožňuje čítať vstupy porovnaním niektorých vzorov alebo oddeľovačov.
Záverom je, že použitie triedy Scanner v Jave zostáva najjednoduchším a preferovaným spôsobom čítania vstupu.
=> Vyskúšajte Sprievodcu dokonalým školením Java tu.
Odporúčané čítanie
- Čo je Java Vector | Výukový program Java Vector Class s príkladmi
- Výukový program triedy Java Array - java.util. Trieda polí s príkladmi
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Výukový program pre rozhranie Java a abstraktnú triedu s príkladmi
- Výukový program Java Reflection s príkladmi
- Jagged Array In Java - návod s príkladmi
- Výukový program Java Array Length s príkladmi kódu
- Výukový program pre Java String Metódy reťazca Java s príkladmi