Ako používať skener v Jave

How Use Scanner Java



Skener v Jave je trieda v balíku java.util. Táto trieda má za cieľ čítať vstup z reťazca, klávesnice, súboru alebo sieťovej zásuvky. Tento článok sa zameriava iba na čítanie vstupov z klávesnice a zobrazenie výsledku v okne terminálu. Podobné nápady je možné použiť aj na čítanie vstupov zo súboru alebo zo sieťového kanála. Skener netlačí do okna terminálu. Na tlač na termináli použite objekt System.out. Tento objekt je jednoduché použiť na tlač na terminál, ako je to znázornené nižšie.

Ak chcete používať triedu skenera, musíte ho najskôr importovať. Potom z neho treba vytvoriť inštanciu objektu. Po použití objektu Scanner ho musíte zatvoriť. Objekt vstupného toku, ktorý predstavuje klávesnicu, je System.in. Skener má mnoho spôsobov. V tomto článku budú vysvetlené iba tie bežne používané.







Obsah článku



Jednoduché použitie triedy skenerov

Nasledujúci kód požiada používateľa, aby zadal vetu, a potom zobrazí vetu:



import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Scanner scanObj= NovýSkener( Systém .v);
Systém .von.println('Napíšte vetu a stlačte Enter: ');

Reťazec veta=scanObj.nextLine();
Systém .von.println(veta);

scanObj.Zavrieť();
}
}

Prvý riadok importuje triedu Scanner. V hlavnej funkcii prvý riadok vytvorí objekt skenera pomocou objektu System.in pre klávesnicu. Hneď ako sa vytvorí objekt skenera, začne čakať na zadanie. Nasledujúci riadok vytlačí príkaz a požiada používateľa, aby zadal vetu. Nasledujúci riadok v kóde používa metódu nextLine () objektu skenera na prečítanie vety používateľa po stlačení klávesu Enter. Riadok potom v kóde znova vytlačí vetu v okne terminálu. Posledný riadok zatvorí objekt skenera.





Pľuvanie vstupného riadku na hodnoty

Nasledujúci kód rozdeľuje vstupný riadok na slová (tokeny) pomocou medzery ako oddeľovača:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Scanner scanObj= NovýSkener( Systém .v);
Systém .von.println('Zadajte riadok tokenov a stlačte kláves Enter:');

kým(scanObj.hasNext()){
Systém .von.println(scanObj.Ďalšie());
}

scanObj.Zavrieť();
}
}

hasNext () a next () sú ďalšie dve metódy objektu skenera. Keď objekt skenera prečíta riadok, ponechá ho. next () pristupuje k ďalšiemu tokenu (slovu). hasNext () vráti hodnotu true, ak ešte nie je prístupný žiadny iný token.



Od používateľa sa bohužiaľ stále očakáva, že zadá vstup na rozdelenie a opätovné zobrazenie s týmto kódom. Ak to chcete ukončiť, stlačte kombináciu klávesov Ctrl+z a mali by ste byť späť na príkazovom riadku.

Vo vyššie uvedenom kóde oddeľovač oddeľuje tokeny v priestore. Je možné použiť inú postavu. Nasledujúci kód používa čiarku. Ak testujete kód, nezabudnite stlačiť Ctrl+z na ukončenie cyklu.

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Scanner scanObj= NovýSkener( Systém .v);
Systém .von.println('Zadajte riadok tokenov a stlačte kláves Enter:');

scanObj.useDelimiter(',');

kým(scanObj.hasNext()){
Systém .von.println(scanObj.Ďalšie());
}

scanObj.Zavrieť();
}
}

Ak by ste testovali kód, všimli by ste si, že medzery v tokenoch boli zahrnuté ako súčasť tokenov (výstup). Výraz, scanObj.useDelimiter (,); zadané po prečítaní vstupného riadka; to je čiarka, oddeľovač.

Čítanie a validácia primitívnych typov údajov

metóda nextBoolean ()

V nasledujúcom kóde sa očakáva, že používateľ zadá hodnotu true alebo false bez úvodzoviek a potom, ak používateľ zadá čokoľvek iné, napríklad áno alebo nie, stlačí kláves Enter. Zobrazí sa chybové hlásenie.

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.vytlačiť(„Máš viac ako 24? ');
Scanner scanObj= NovýSkener( Systém .v);

booleovskýbl=scanObj.nextBoolean();
keby (bl== pravda) {
Systém .von.println('Máš viac ako 24 rokov');
}
inak keby (bl== falošný) {
Systém .von.println(„Máte menej ako 24 rokov“);
}

scanObj.Zavrieť();
}
}

Pretože java vydá chybové hlásenie, pokiaľ zadaný údaj nie je pravdivý alebo nepravdivý, použije sa namiesto else príkaz else if.

Rozdiel medzi metódami print a println je v tom, že print očakáva vstup na aktuálnom riadku, zatiaľ čo println očakáva vstup na nasledujúcom riadku.

metóda nextByte ()

So znakovou sadou ASCII je znak jeden bajt. Pri niektorých východných znakových sadách však môže znak pozostávať z viac ako jedného bajtu. Metóda nextByte nezávisle od znakovej sady číta a overuje ďalší bajt vstupu. Na tento účel je možné použiť nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.vytlačiť(„Napíšte číslo<128, press Enter: ');
Scanner scanObj= NovýSkener( Systém .v);

bytebt=scanObj.nextByte();
Systém .von.println(bt);

scanObj.Zavrieť();
}
}

Ak pre tento kód zadáte číslo väčšie ako 127 alebo znak abecedy, vydá sa chybové hlásenie.

metóda nextInt ()

Ďalší celočíselný token ako vstup môže byť tiež validovaný a prijatý. Môžete použiť nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.vytlačiť(„Zadajte ľubovoľné celé číslo:“);
Scanner scanObj= NovýSkener( Systém .v);

intna jeden=scanObj.nextInt();
Systém .von.println(na jeden);

scanObj.Zavrieť();
}
}

Predné alebo zadné medzery boli odstránené. Pre tento kód by bola prijatá akákoľvek celočíselná hodnota vrátane hodnôt vyšších ako 127. Pri týchto metódach nextXXX () sa po zlyhaní overenia zobrazí chybové hlásenie.

metóda nextBigInteger ()

Zdá sa, že softvéroví inžinieri nikdy neprestanú prichádzať s novými vecami. Veľké celé číslo je celé číslo, ktorého hodnota je oveľa väčšia ako celé číslo. V Jave sa však dá čítať rovnako ako celé číslo. Nasledujúci kód to ilustruje:

import java.util.Scanner;
import java.math.BigInteger;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.println(„Zadajte akékoľvek celé číslo pre veľké celé číslo:“);
Scanner scanObj= NovýSkener( Systém .v);

BigInteger na jeden=scanObj.nextBigInteger();
Systém .von.println(na jeden);

scanObj.Zavrieť();
}
}

Všimnite si príkazu import, import java.math.BigInteger ;. Všimnite si tiež, že typ veľkých celých čísel sa začína veľkými písmenami B a nie malými písmenami b.

metóda nextFloat ()

Ďalší token float ako vstup môže byť tiež validovaný a prijatý. Môžete použiť nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.vytlačiť(„Zadajte ľubovoľný plavák:“);
Scanner scanObj= NovýSkener( Systém .v);

plavákna jeden=scanObj.nextFloat();
Systém .von.println(na jeden);

scanObj.Zavrieť();
}
}

Príklad float number je 23.456. Predné alebo zadné medzery boli odstránené.

nextDouble ()

Ďalší dvojitý token ako vstup môže byť tiež validovaný a prijatý. Môžete použiť nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.vytlačiť(„Zadajte ľubovoľný dvojitý znak:“);
Scanner scanObj= NovýSkener( Systém .v);

dvojnásobokna jeden=scanObj.nextDouble();
Systém .von.println(na jeden);

scanObj.Zavrieť();
}
}

Príklad dvojitého čísla je 23,456. Dvojité číslo sa líši od jednoduchého čísla, pretože má menšiu chybovosť. Predné alebo zadné medzery boli odstránené.

metóda nextLine ()

Metóda nextLine () je pre reťazec. Ak je reťazec vstupným riadkom z klávesnice po stlačení klávesu Enter, môže mať znak nového riadka „ n“. Môžete použiť nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Systém .von.println(„Zadajte riadok s\n: ');
Scanner scanObj= NovýSkener( Systém .v);

Reťazec p=scanObj.nextLine();
Systém .von.println(p);

scanObj.Zavrieť();
}
}

Všimnite si, že typ reťazca sa začína veľkými písmenami S a nie malými s.

V tomto článku boli predtým použité metódy nextLine (), hasNext () a next (). Skener má ďalšie metódy a ďalšie primitívne metódy údajov - pozrite si neskôr.

Priradenie vstupu premennej

Vstup je možné priradiť k premennej, ako ukazuje nasledujúci kód:

import java.util.Scanner;

verejná triedaTrieda{
verejná statický prázdnyHlavná( Reťazec []args) {
Scanner scanObj= NovýSkener( Systém .v);

Systém .von.vytlačiť('Zadaj meno: ');
Reťazec názov=scanObj.nextLine();

Systém .von.vytlačiť(„Zadajte vek:“);
intVek=scanObj.nextInt();

Systém .von.vytlačiť(„Zadajte plat:“);
dvojnásobokplat=scanObj.nextDouble();

Systém .von.println('Názov: ' +názov+ ', Vek: ' +Vek+ ', Plat:' +plat);

scanObj.Zavrieť();
}
}

Záver

Skener v Jave je trieda v balíku java.util. Táto trieda má za cieľ čítať vstup z reťazca, klávesnice, súboru alebo sieťovej zásuvky. Tento článok sa zameral hlavne na čítanie vstupov z klávesnice a zobrazenie výsledku v okne terminálu. Podobné nápady je možné použiť aj na čítanie vstupov z reťazca, súboru alebo sieťového kanála.

Ak chcete prečítať celý riadok vstupu z klávesnice, použite metódu nextLine (). Riadok ako reťazec je možné rozdeliť na tokeny pomocou metód hasNext () a next () a cyklu while. Predvolený oddeľovač na rozdelenie je medzera, ale programátor si môže vybrať iný oddeľovač. V prípade potreby nezabudnite kombináciu klávesov Ctrl+z zastaviť. Odstránenie úvodných a koncových medzier je možné vykonať pomocou iných schém, ktoré nie sú uvedené v tomto článku. Overenie tokenov je možné vykonať aj pomocou iných schém, ktoré nie sú uvedené v tomto článku.

Primitívne hodnoty je možné čítať pomocou parametrov nextBoolean (), nextByte (), nextInt () atď. Tieto metódy nextXXX () vykonávajú validáciu a tiež odstraňujú úvodné a koncové medzery.

Skener Java má mnoho ďalších metód. V tomto článku je však vysvetlené základné použitie skenera. Výber tokenu sa v skutočnosti vykonáva pomocou techník regulárneho výrazu. Použitie techník regulárneho výrazu je diskusia, niekedy inokedy.