Kako uporabljati Scanner v Javi

How Use Scanner Java



Skener v Javi je razred v paketu java.util. Cilj tega razreda je branje vnosa iz niza, tipkovnice, datoteke ali omrežne vtičnice. Ta članek se osredotoča le na branje vnosa s tipkovnice in prikaz rezultata v oknu terminala. Podobne zamisli je mogoče uporabiti za branje vnosa iz datoteke ali omrežnega kanala. Optični bralnik ne tiska v terminalsko okno. Za tiskanje na terminal uporabite objekt System.out. Ta objekt je preprosto uporabiti za tiskanje na terminal, kot je prikazano spodaj.

Če želite uporabiti razred Scanner, ga morate najprej uvoziti. Po tem je treba iz njega ustvariti primerek predmeta. Po uporabi predmeta optičnega bralnika ga je treba zapreti. Objekt vhodnega toka, ki predstavlja tipkovnico, je System.in. Optični bralnik ima veliko načinov. V tem članku bodo razložene le tiste, ki se pogosto uporabljajo.







Vsebina članka



Enostavna uporaba razreda optičnega bralnika

Naslednja koda od uporabnika zahteva, da vnese stavek, nato pa prikaže stavek:



uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);
Sistem .ven.println('Vnesite stavek in pritisnite Enter:');

Vrvica stavek=scanObj.nextLine();
Sistem .ven.println(stavek);

scanObj.blizu();
}
}

Prva vrstica uvozi razred Scanner. V glavni funkciji prva vrstica ustvari objekt optičnega bralnika z uporabo predmeta System.in za tipkovnico. Takoj ko je objekt optičnega bralnika ustvarjen, začne čakati na vnos. Naslednja vrstica natisne izjavo in prosi uporabnika, naj vnese stavek. Vrstica, ki sledi v kodi, uporablja metodo nextLine () predmeta optičnega bralnika za branje uporabnikovega stavka, potem ko pritisne Enter. Vrstica za v kodi ponatisne stavek v terminalskem oknu. Zadnja vrstica zapre objekt optičnega bralnika.





Pljuvanje vnosne vrstice v vrednosti

Naslednja koda razdeli vnosno vrstico na besede (žetone), pri čemer presledek uporabi kot ločilo:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);
Sistem .ven.println('Vnesite vrstico žetonov in pritisnite Enter:');

medtem(scanObj.hasNext()){
Sistem .ven.println(scanObj.Naslednji());
}

scanObj.blizu();
}
}

hasNext () in next () sta še dve metodi predmeta optičnega bralnika. Ko objekt optičnega bralnika prebere vrstico, jo obdrži. next () dostopa do naslednjega žetona (besede). hasNext () vrne true, če obstaja še en žeton, do katerega še ni dostopen.



Na žalost se od uporabnika še vedno pričakuje, da bo s to kodo vnesel vnos za razdelitev in ponovni prikaz. Če želite vse to končati, pritisnite Ctrl+z in vrnili se boste v ukazni poziv.

V zgornji kodi ločevalec ločuje žetone v presledku. Uporabite lahko drug znak. Naslednja koda uporablja vejico. Če preizkusite kodo, ne pozabite pritisniti Ctrl+z, da končate zanko.

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);
Sistem .ven.println('Vnesite vrstico žetonov in pritisnite Enter:');

scanObj.useDelimiter(',');

medtem(scanObj.hasNext()){
Sistem .ven.println(scanObj.Naslednji());
}

scanObj.blizu();
}
}

Če bi preizkusili kodo, bi opazili, da so presledki v žetonih vključeni kot del žetonov (izhod). Izraz, scanObj.useDelimiter (,); vneseno po branju vnosne vrstice; to je tisto, kar naredi vejico, ločilo.

Branje in preverjanje primitivnih podatkovnih tipov

metoda nextBoolean ()

V naslednji kodi se pričakuje, da bo uporabnik vnesel true ali false brez narekovajev in nato pritisnil tipko Enter, če bo uporabnik vnesel kaj drugega, na primer da ali ne, se bo prikazalo sporočilo o napaki.

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.tiskanje('Ste starejši od 24 let? ');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

logičnobl=scanObj.nextBoolean();
če (bl== prav) {
Sistem .ven.println('Imate več kot 24 let');
}
drugače če (bl== napačno) {
Sistem .ven.println('Imate manj kot 24 let');
}

scanObj.blizu();
}
}

Ker bo java izdala sporočilo o napaki, če vnos ni resničen ali napačen, je bil namesto else uporabljen else if.

Razlika med metodami, print in println, je v tem, da print pričakuje vnos v trenutni vrstici, medtem ko println pričakuje vnos v naslednji vrstici.

metoda nextByte ()

Z naborom znakov ASCII je znak en bajt. Vendar pa je pri nekaterih vzhodnih naborih znakov lahko znak sestavljen iz več kot enega bajta. Ne glede na niz znakov metoda nextByte prebere in potrdi naslednji bajt vnosa. V ta namen se lahko uporabi naslednja koda:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.tiskanje('Številka vrste<128, press Enter: ');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

bajtbt=scanObj.nextByte();
Sistem .ven.println(bt);

scanObj.blizu();
}
}

Če za to kodo vnesete več kot 127 ali abecedni znak, se prikaže sporočilo o napaki.

metoda nextInt ()

Naslednji celoštevilčni žeton kot vnos lahko tudi potrdimo in sprejmemo. Uporabite lahko naslednjo kodo:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.tiskanje('Vnesite poljubno celo število:');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

intna enem=scanObj.nextInt();
Sistem .ven.println(na enem);

scanObj.blizu();
}
}

Vodilni ali zadnji prostori so bili odstranjeni. Za to kodo bi bila sprejeta vsa cela vrednost, vključno z vrednostmi, večjimi od 127. S temi metodami nextXXX (), ko preverjanje ne uspe, se izda sporočilo o napaki.

metoda nextBigInteger ()

Zdi se, da programski inženirji ne bodo nehali odkrivati ​​novih stvari. Veliko celo število je celo število, katerega vrednost je veliko večja od vrednosti celega števila. Z Javo pa ga lahko beremo enako kot celo število. Naslednja koda ponazarja to:

uvoz java.util.Scanner;
uvoz java.math.BigInteger;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.println('Vnesite poljubno celo število za veliko celo število:');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

BigInteger na enem=scanObj.nextBigInteger();
Sistem .ven.println(na enem);

scanObj.blizu();
}
}

Upoštevajte izjavo o uvozu, uvoz java.math.BigInteger ;. Upoštevajte tudi, da se vrsta velikega števila začne z veliko črko B in ne z majhno črko b.

metoda nextFloat ()

Naslednji float žeton kot vnos je mogoče tudi preveriti in sprejeti. Uporabite lahko naslednjo kodo:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.tiskanje('Vnesite poljuben plovec:');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

plavatina enem=scanObj.nextFloat();
Sistem .ven.println(na enem);

scanObj.blizu();
}
}

Primer plavajoče številke je 23.456. Vodilni ali zadnji prostori so bili odstranjeni.

nextDouble ()

Naslednji dvojni žeton kot vnos je mogoče tudi potrditi in sprejeti. Uporabite lahko naslednjo kodo:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.tiskanje('Vnesite poljubno dvojno:');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

dvojnona enem=scanObj.nextDouble();
Sistem .ven.println(na enem);

scanObj.blizu();
}
}

Primer dvojnega števila je 23.456. Dvojno število se razlikuje od plavajočega, ker ima manjšo stopnjo napake. Vodilni ali zadnji prostori so bili odstranjeni.

metoda nextLine ()

Metoda nextLine () je za niz. Če je niz vnosna vrstica s tipkovnice po pritisku na Enter, ima lahko znak nove vrstice ‘ n’. Uporabite lahko naslednjo kodo:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Sistem .ven.println('Vnesite vrstico z\n: ');
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

Vrvica str=scanObj.nextLine();
Sistem .ven.println(str);

scanObj.blizu();
}
}

Upoštevajte, da se vrsta niza začne z velikimi črkami S in ne z malimi črkami s.

V tem članku so bile prej uporabljene metode nextLine (), hasNext () in next (). Optični bralnik ima druge metode in druge primitivne podatkovne metode - glej kasneje.

Dodelitev vnosa spremenljivki

Vhod je mogoče dodeliti spremenljivki, kot kaže naslednja koda:

uvoz java.util.Scanner;

javno razredRazred{
javno statična ničnoglavni( Vrvica []args) {
Optično branje optičnega bralnikaObj= novOptični bralnik( Sistem .v);

Sistem .ven.tiskanje('Vnesite ime:');
Vrvica ime=scanObj.nextLine();

Sistem .ven.tiskanje('Vnesite starost:');
intstarost=scanObj.nextInt();

Sistem .ven.tiskanje('Vnesite plačo:');
dvojnoplačo=scanObj.nextDouble();

Sistem .ven.println('Ime:' +ime+ ', Starost:' +starost+ ', Plača:' +plačo);

scanObj.blizu();
}
}

Zaključek

Skener v Javi je razred v paketu java.util. Cilj tega razreda je branje vnosa iz niza, tipkovnice, datoteke ali omrežne vtičnice. Ta članek se je osredotočil predvsem na branje vnosa s tipkovnice in prikaz rezultata v oknu terminala. Podobne zamisli je mogoče uporabiti za branje vnosa iz niza, datoteke ali omrežnega kanala.

Če želite prebrati celotno vrstico vnosa s tipkovnico, uporabite metodo nextLine (). Vrstico kot niz lahko razdelimo na žetone z uporabo metod hasNext () in next () ter zanke while. Privzeti razmejevalnik za razdelitev je prostor, vendar lahko programer izbere kakšen drug razmejevalnik. Ne pozabite narediti Ctrl+z, če je potrebno, da ustavite zanko while. Odstranitev začetnega in zadnjega prostora lahko izvedete z drugimi shemami, ki niso obravnavane v tem članku. Validacijo žetonov lahko opravite tudi z drugimi shemami, ki niso obravnavane v tem članku.

Primitivne vrednosti je mogoče prebrati s pomočjo nextBoolean (), nextByte (), nextInt () itd. Te metode nextXXX () opravijo preverjanje veljavnosti in odstranijo tudi začetne in končne presledke.

Skener Java ima veliko več metod. Vendar pa je v tem članku razložena osnovna uporaba optičnega bralnika. Žeton se dejansko izbere s tehnikami regularnega izraza. O uporabi tehnik rednega izražanja se še kdaj pogovarjamo.