java scanner class tutorial with examples
V tomto kurzu probereme, jak importovat a používat třídu skeneru Java spolu s jejími různými metodami, API skeneru a příklady:
Již jsme viděli standardní metody vstupu a výstupu, které Java používá ke čtení / zápisu dat na standardní I / O zařízení.
Java poskytuje ještě další mechanismus pro čtení vstupu uživatele. Toto je třída skeneru. Ačkoli není příliš efektivní, třída skenerů je nejjednodušší a preferovaný způsob čtení vstupů v programech Java.
=> Zkontrolujte VŠECHNY výukové programy Java zde.
Co se naučíte:
Třída skeneru Java: hloubkový pohled
Třída skeneru se většinou používá ke skenování vstupu a čtení vstupu primitivních (vestavěných) datových typů, jako jsou int, desítková, dvojitá atd. Třída skeneru v zásadě vrací tokenizovaný vstup na základě nějakého oddělovače. Obecně tedy platí, že pokud chcete číst typ dt, můžete ke čtení vstupu použít funkci nextdt ().
Třída skeneru implementuje rozhraní Iterator (řetězec), Closeable a AutoCloseable.
Prozkoumejme nyní podrobnosti o této třídě skenerů.
Importovat skener
Třída skeneru patří do balíčku „java.util“. Chcete-li tedy ve svém programu použít třídu Scanner, musíte tento balíček importovat následujícím způsobem.
importovat java.util. *
NEBO
import java.util.Scanner;
Kterýkoli z výše uvedených příkazů importuje třídu skeneru a její funkčnost do vašeho programu.
Třída skeneru Java
Jakmile je třída Scanner importována do programu Java, můžete ji použít ke čtení vstupu různých datových typů. V závislosti na tom, zda chcete číst vstup ze standardního vstupu nebo souboru nebo kanálu, můžete předat příslušný předdefinovaný objekt objektu Scanner.
Níže je uveden základní příklad použití třídy skeneru.
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ýstup:
Ve výše uvedeném programu jsme při vytváření objektu třídy Scanner poskytli jako objekt „System.in“ (standardní vstup). Pak načteme řetězcový vstup ze standardního vstupu.
Scanner API (Constructors & Methods)
V této části podrobně prozkoumáme API třídy Scanner. Třída skeneru obsahuje různé přetížené konstruktory pro přizpůsobení různým metodám vstupu, jako je System.in, vstup do souboru, cesta atd.
Následující tabulka uvádí prototyp a popis každého konstruktoru třídy Scanner.
funkce přítele v C ++
Nedělej | Prototyp | Popis |
---|---|---|
7 | Skener (zdroj cesty, řetězec charsetName) | Tento konstruktor vytvoří nový skener, který skenuje zadaný soubor a vytváří hodnoty |
1 | Skener (zdroj InputStream) | Tento konstruktor vytvoří nový skener, který prohledá nový InputStream, zdroj a vytvoří hodnoty |
dva | Skener (zdroj InputStream, řetězec charsetName) | Tento konstruktor vytvoří nový skener, který prohledá nový InputStream, zdroj a vytvoří hodnoty |
3 | Skener (zdroj souboru) | Tento konstruktor vytvoří nový skener, který skenuje zadaný soubor a vytváří hodnoty |
4 | Skener (zdroj souboru, řetězec charsetName) | Tento konstruktor vytvoří nový skener, který skenuje zadaný soubor a vytváří hodnoty |
5 | Skener (zdroj řetězce) | Tento konstruktor vytvoří nový skener, který prohledá zadaný řetězec a vytvoří hodnoty |
6 | Skener (zdroj cesty) | Tento konstruktor vytvoří nový skener, který skenuje zadaný soubor a vytváří hodnoty |
8 | Skener (čitelný zdroj) | Tento konstruktor vytvoří nový skener, který skenuje zadaný zdroj a vytváří hodnoty |
9 | Skener (zdroj ReadableByteChannel) | Tento konstruktor vytvoří nový skener, který skenuje zadaný kanál a vytváří hodnoty |
10 | Skener (zdroj ReadableByteChannel, řetězec charsetName) | Tento konstruktor vytvoří nový skener, který skenuje zadaný kanál a vytváří hodnoty |
Stejně jako konstruktory poskytuje třída Scanner také řadu metod, které se používají ke skenování a čtení vstupu. Poskytuje různé booleovské metody, které vám umožňují zkontrolovat, zda je další token na vstupu tokenem konkrétního datového typu.
Všimněte si, že pro každý konstruktor můžete zadat pouze jeden argument s předdefinovaným vstupním objektem nebo dva argumenty skládající se z předdefinovaného vstupního objektu a znakové sady. V případě jednoho argumentu se předpokládá výchozí znaková sada.
Existují také metody k načtení tokenů každého datového typu.
Mezi další metody patří nastavení národního prostředí, radixů, vzorů shody, zavření skeneru atd.
Následující tabulka uvádí prototyp a popis každé ze základních metod skeneru.
Nedělej | Prototyp | Popis |
---|---|---|
7 | Boolean hasNextFloat () | Zkontroluje, zda je další token ve vstupu skeneru floatového typu |
1 | Boolean hasNext () | Vrátí hodnotu true, pokud je ve vstupu skeneru jiný token |
dva | Boolean hasNextBigDecimal () | Zkontroluje, zda je další token ve vstupu skeneru typu bigDecimal. |
3 | Boolean hasNextBigInteger () | Zkontroluje, zda je další token ve vstupu skeneru typu bigInteger |
4 | Boolean hasNextBoolean () | Zkontroluje, zda je další token ve vstupu skeneru typu Boolean |
5 | Boolean hasNextByte () | Zkontroluje, zda je další token ve vstupu skeneru typu Byte |
6 | Boolean hasNextDouble () | Zkontroluje, zda je další token ve vstupu skeneru dvojitého typu |
8 | Boolean hasNextInt () | Zkontroluje, zda je další token ve vstupu skeneru celočíselného typu |
9 | Boolean hasNextLine () | Zkontroluje, zda je dalším tokenem ve vstupu skeneru jiný řádek |
10 | Boolean hasNextLong () | Zkontroluje, zda je další token ve vstupu skeneru dlouhého typu |
jedenáct | Boolean hasNextShort () | Zkontroluje, zda je další token ve vstupu skeneru krátkého typu |
12 | Řetězec next () | Naskenuje vstup pro další kompletní token |
13 | BigDecimal nextBigDecimal () | Naskenuje vstup pro další token BigDecimal |
14 | BigInteger nextBigInteger () | Naskenuje vstup pro další token BigInteger |
patnáct | Boolean nextBoolean () | Naskenuje vstup pro další booleovský token |
16 | Byte nextByte () | Naskenuje vstup pro další bajtový token |
17 | Double nextDouble () | Naskenuje vstup pro další Double token |
18 | Float nextFloat () | Naskenuje vstup pro další plovoucí token |
19 | Int nextInt () | Naskenuje vstup pro další celočíselný token |
dvacet | Řetězec nextLine () | Získejte přeskočení vstupního řetězce z objektu skeneru |
dvacet jedna | Long nextLong () | Naskenuje vstup pro další token Long integer |
22 | Krátký dalšíKrátký () | Naskenuje vstup pro další token krátkých celých čísel |
2. 3 | Reset skeneru () | Resetujte aktuálně používaný skener |
24 | Přeskočení skeneru () | Ignorujte oddělovače a přeskočte vstup, který odpovídá danému vzoru |
25 | Použití skeneru Oddělovač () | Nastavte oddělovací vzor na zadaný vzor |
26 | Skener useLocale () | Nastavte objekt národního prostředí Skenery s daným národním prostředím |
27 | Použití skeneru Radix () | Nastavte určený radix jako výchozí radix pro skener |
28 | Int radix () | Vrátí výchozí radix aktuálního skeneru |
29 | void remove () | Lze použít, když Iterator nepodporuje operaci odebrání |
30 | Streamovat tokeny () | Vrátí proud tokenů oddělených oddělovačem z aktuálního skeneru |
31 | String toString () | Reprezentace návratového řetězce daného aktuálně používaného skeneru |
32 | IOException ioException () | Vrátí IOException naposledy vyvolanou čitelným objektem Scanner |
33 | Najít stream ALL () | Vrátí proud výsledků shody, které odpovídají danému vzoru |
3. 4 | Řetězec findInLine () | Najděte další výskyt vzoru z daného řetězce; ignoruje oddělovače |
35 | Najít řetězecWithinHorizon () | Najděte další výskyt vzoru z daného řetězce; ignoruje oddělovače |
36 | Oddělovač vzoru () | Vrátí vzorek použitý aktuálním skenerem |
37 | Void close () | Zavře skener |
38 | MatchResult match () | Vrátí odpovídající výsledek poslední operace skenování |
39 | Místní místní () | Vrátí národní prostředí aktuálního skeneru |
Šek tady dozvědět se více o metodách skeneru.
Jak používat skener v Javě?
Nyní, když jste viděli různé konstruktory a metody poskytované třídou Scanner, pojďme nyní implementovat některé z příkladů, které ukazují, jak používat třídu Scanner v Javě.
Následující implementace ukazuje použití třídy skeneru ke čtení vstupu ze System.in tj. Standardního vstupu.
Zde používáme předdefinovaný objekt System.in k vytvoření objektu Scanner. Uživatel je poté vyzván k zadání názvu, třídy a procenta. Všechny tyto podrobnosti se čtou pomocí objektu třídy Scanner.
Poznamenejte si metody, které používají objekty skeneru ke čtení různých typů vstupu. Jelikož se jedná o řetězec, používá objekt Scanner metodu next (). Pro vstup do třídy používá nextInt (), zatímco procento používá nextFloat ().
Tímto způsobem můžete snadno oddělit vstup při čtení.
Výstup programu zobrazuje zadávaný vstup a zobrazené informace.
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ýstup:
Řetězec skeneru
Jak již bylo zmíněno, při vytváření objektu skeneru můžete použít různé předdefinované objekty. To znamená, že můžete číst vstup ze standardního vstupu, souborů a různých I / O kanálů nebo také z řetězců.
Když se použije vstup řetězce, můžete v něm použít i regulární výrazy.
Následující příklady ukazují program, ve kterém skener používá jako vstup řetězec. Tento vstup je poté naskenován a tokeny odděleny přečtením každého tokenu.
Načtené tokeny se poté zobrazí na výstupu.
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ýstup:
Zavřete skener
Třída skeneru Java používá k zavření skeneru metodu „Close ()“. Třída Scanner také interně implementuje uzavíratelné rozhraní, a proto pokud skener ještě není uzavřen, vyvolá rozhraní Readable jeho blízkou metodu.
Je dobrým programovacím postupem, abyste skener explicitně zavřeli pomocí metody Close (), jakmile jej dokončíte.
Poznámka: Pokud je objekt skeneru uzavřen a dojde k pokusu o vyhledávání, bude výsledkem „IllegalStateException“.
Často kladené otázky
Otázka č. 1) Co je třída skeneru v Javě?
Odpovědět: Třída Scanner je součástí balíčku Java „java.util“ a používá se ke čtení vstupu různých primitivních datových typů, jako jsou int, float, řetězce atd.
bezplatný optimalizátor systému pro Windows 7
Otázka 2) Jaký je rozdíl mezi metodami next () a nextLine () třídy Scanner?
Odpovědět: Metoda next () čte vstup do mezery a po přečtení vstupu umístí kurzor na stejný řádek. Metoda nextLine () však čte celý řádek vstupu až do konce řádku včetně mezer.
Otázka č. 3) Co je hasNext () v Javě?
Odpovědět: Metoda hasNext () je jednou z metod skeneru Java. Tato metoda vrátí hodnotu true, pokud má skener ve vstupu jiný token.
Otázka č. 4) Potřebujete zavřít třídu skenerů?
Odpovědět: Je lepší, ale není povinné zavřít třídu skeneru, jako by nebyla zavřená, základní čitelné rozhraní třídy skeneru provede práci za vás. Kompilátor může blikat nějaké varování, pokud není zavřený.
Jako dobrý programovací postup skener vždy zavřete.
Otázka č. 5) Jaký je účel „system.in“ ve třídě Scanner?
Odpovědět: Použitím souboru „System.in“ ve třídě skeneru umožňujete skeneru číst klávesnici připojenou ke standardním vstupním datům.
Závěr
V tomto kurzu jsme viděli třídu Scanner a všechny její podrobnosti včetně API a implementace. Třída skeneru se používá ke čtení vstupních dat z různých médií, jako je standardní vstup, soubory, kanály IO, řetězce s / bez regulárních výrazů atd.
Ačkoli Scanner není příliš efektivní způsob čtení vstupu, je to jeden z nejjednodušších způsobů. Skener umožňuje číst vstup různých primitivních datových typů, jako jsou int, float, řetězce atd. Když použijete řetězce jako vstupní objekt pro třídu skenerů, můžete s nimi použít i regulární výrazy.
Třída Scanner také umožňuje číst vstupy porovnáním nějakého vzoru nebo oddělovače.
Závěrem lze říci, že používání třídy skeneru v Javě zůstává nejjednodušším a preferovaným způsobem čtení vstupu.
=> Podívejte se na průvodce Perfect Java Training Guide zde.
Doporučené čtení
- Co je Java Vector | Výukový program Java Vector Class s příklady
- Výukový program třídy Java Array - třída java.util.Arrays s příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Výukový program pro rozhraní Java a abstraktní třídu s příklady
- Výukový program Java Reflection s příklady
- Jagged Array In Java - výukový program s příklady
- Výukový program Java Array Length s příklady kódu
- Výukový program Java String | Metody řetězců Java s příklady