Kako koristiti skener u Javi

How Use Scanner Java



Skener u Javi je klasa u paketu java.util. Ova klasa ima za cilj čitanje unosa sa niza, tipkovnice, datoteke ili mrežne utičnice. Ovaj se članak koncentrira samo na čitanje unosa s tipkovnice i prikaz rezultata u prozoru terminala. Slične ideje mogu se koristiti za čitanje unosa iz datoteke ili mrežnog kanala. Skener ne ispisuje na prozoru terminala. Za ispis na terminal upotrijebite objekt System.out. Ovaj objekt je jednostavno koristiti za ispis na terminalu, kao što je dolje ilustrirano.

Da biste koristili klasu Skener, morate je prethodno uvesti. Nakon toga, objekt se mora instancirati iz njega. Nakon korištenja objekta Skener, mora se zatvoriti. Objekt ulaznog toka koji predstavlja tipkovnicu je System.in. Skener ima mnogo metoda. U ovom će članku biti objašnjene samo one koje se često koriste.







Sadržaj članka



Jednostavno korištenje klase skenera

Sljedeći kod traži od korisnika da upiše rečenicu, a zatim prikazuje rečenicu:



uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Skener skeniranjeObj= noviSkener( Sustav .u);
Sustav .van.println('Upišite rečenicu i pritisnite Enter:');

Niz rečenica=scanObj.nextLine();
Sustav .van.println(rečenica);

scanObj.Zatvoriti();
}
}

Prvi redak uvozi klasu skenera. U glavnoj funkciji prvi redak stvara objekt skenera pomoću objekta System.in za tipkovnicu. Čim se stvori objekt skenera, počinje čekati na unos. Sljedeći redak ispisuje izjavu tražeći od korisnika da upiše rečenicu. Redak koji slijedi u kodu koristi metod nextLine () objekta skenera za čitanje rečenice korisnika nakon što pritisne Enter. Redak nakon, u kodu, ponovno ispisuje rečenicu u prozoru terminala. Zadnji redak zatvara objekt skenera.





Pljuvanje ulazne linije u vrijednosti

Sljedeći kôd razdvaja ulazni redak u riječi (tokene), koristeći razmak kao graničnik:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Skener skeniranjeObj= noviSkener( Sustav .u);
Sustav .van.println('Upišite red žetona i pritisnite Enter:');

dok(scanObj.hasNext()){
Sustav .van.println(scanObj.Sljedeći());
}

scanObj.Zatvoriti();
}
}

hasNext () i next () su dvije druge metode objekta skenera. Kad objekt skenera čita redak, on ga zadržava. next () pristupa sljedećoj oznaci (riječi). hasNext () vraća true ako postoji još jedan token kojem se još ne pristupa.



Nažalost, od korisnika se i dalje očekuje da unese unos za podjelu i ponovni prikaz s ovim kodom. Da biste sve to završili, pritisnite Ctrl+z i trebali biste se vratiti na naredbeni redak.

U gornjem kodu graničnik odvaja žetone u prostoru. Može se koristiti drugi znak. Sljedeći kôd koristi zarez. Ne zaboravite pritisnuti Ctrl+z da biste prekinuli petlju ako testirate kôd.

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Skener skeniranjeObj= noviSkener( Sustav .u);
Sustav .van.println('Upišite red žetona i pritisnite Enter:');

scanObj.useDelimiter(',');

dok(scanObj.hasNext()){
Sustav .van.println(scanObj.Sljedeći());
}

scanObj.Zatvoriti();
}
}

Da ste testirali kôd, primijetili biste da su razmaci u tokenima uključeni kao dio tokena (izlaz). Izraz, scanObj.useDelimiter (,); otkucano nakon čitanja ulaznog retka; to je ono što čini zarez, razdjelnik.

Čitanje i provjera primitivnih tipova podataka

nextBoolean () metoda

U sljedećem kodu od korisnika se očekuje da upiše true ili false bez navodnika, a zatim pritisne tipku Enter ako korisnik upiše bilo što drugo, na primjer da ili ne, prikazat će se poruka o pogrešci.

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.ispisati('Jeste li stariji od 24 godine? ');
Skener skeniranjeObj= noviSkener( Sustav .u);

booleanbl=scanObj.nextBoolean();
ako (bl== pravi) {
Sustav .van.println('Imate više od 24 godine');
}
drugo ako (bl== lažno) {
Sustav .van.println('Imate manje od 24 godine');
}

scanObj.Zatvoriti();
}
}

Budući da će java izdati poruku o pogrešci sve dok unos nije točno ili netočno, umjesto if je korišteno else if.

Razlika između metoda, print i println, je u tome što ispis očekuje unos u trenutnom retku, dok println očekuje unos u sljedećem retku.

nextByte () metoda

Uz skup znakova ASCII, znak je jedan bajt. Međutim, s nekim istočnjačkim skupovima znakova, znak se može sastojati od više od jednog bajta. Neovisno o skupu znakova, nextByte metoda čita i provjerava sljedeći bajt unosa. U tu svrhu može se koristiti sljedeći kôd:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.ispisati('Upišite broj<128, press Enter: ');
Skener skeniranjeObj= noviSkener( Sustav .u);

bajtbt=scanObj.nextByte();
Sustav .van.println(bt);

scanObj.Zatvoriti();
}
}

Ako se za ovaj kôd unese broj veći od 127 ili abecedni znak, bit će izdana poruka o pogrešci.

Metoda nextInt ()

Sljedeći cjelobrojni token kao ulaz također se može potvrditi i prihvatiti. Može se koristiti sljedeći kod:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.ispisati('Unesite bilo koji cijeli broj:');
Skener skeniranjeObj= noviSkener( Sustav .u);

intna jedan=scanObj.nextInt();
Sustav .van.println(na jedan);

scanObj.Zatvoriti();
}
}

Ulazni ili zadnji razmaci uklonjeni su. Za ovaj kôd bilo koja cijela vrijednost, uključujući vrijednosti veće od 127, bila bi prihvaćena. S ovim metodama nextXXX (), nakon što provjera valjanosti ne uspije, izdaje se poruka o pogrešci.

nextBigInteger () metoda

Čini se da softverski inženjeri nikada neće prestati smišljati nove stvari. Veliki cijeli broj je cijeli broj čija je vrijednost mnogo veća od vrijednosti cijelog broja. Međutim, s Javom se može čitati na isti način kao i cijeli broj. Sljedeći kod to ilustrira:

uvoz java.util.Skener;
uvoz java.math.BigInteger;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.println('Unesite bilo koji cijeli broj za veliki cijeli broj:');
Skener skeniranjeObj= noviSkener( Sustav .u);

BigInteger na jedan=scanObj.nextBigInteger();
Sustav .van.println(na jedan);

scanObj.Zatvoriti();
}
}

Zabilježite izjavu o uvozu, uvoz java.math.BigInteger ;. Također, imajte na umu da veliki cijeli broj započinje velikim slovom B, a ne malim slovom b.

Metoda nextFloat ()

Sljedeći float znak kao ulaz također se može potvrditi i prihvatiti. Može se koristiti sljedeći kod:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.ispisati('Unesite bilo koji plovak:');
Skener skeniranjeObj= noviSkener( Sustav .u);

plutatina jedan=scanObj.nextFloat();
Sustav .van.println(na jedan);

scanObj.Zatvoriti();
}
}

Primjer plutajućeg broja je 23.456. Ulazni ili zadnji razmaci uklonjeni su.

nextDouble ()

Sljedeći dvostruki token kao ulaz također se može potvrditi i prihvatiti. Može se koristiti sljedeći kod:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.ispisati('Unesite bilo koju dvojku:');
Skener skeniranjeObj= noviSkener( Sustav .u);

dvostrukona jedan=scanObj.nextDouble();
Sustav .van.println(na jedan);

scanObj.Zatvoriti();
}
}

Primjer dvostrukog broja je 23.456. Dvostruki broj se razlikuje od float -a jer ima manju marginu pogreške. Ulazni ili zadnji razmaci uklonjeni su.

nextLine () metoda

Metoda nextLine () služi za niz. Ako je niz ulazni redak s tipkovnice nakon pritiska na Enter, može imati znak novog retka, ‘ n’. Može se koristiti sljedeći kod:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Sustav .van.println('Unesite redak koji ima\n: ');
Skener skeniranjeObj= noviSkener( Sustav .u);

Niz str=scanObj.nextLine();
Sustav .van.println(str);

scanObj.Zatvoriti();
}
}

Uočite da vrsta niza počinje velikim slovom S, a ne malim s.

Metode nextLine (), hasNext () i next () već su korištene u ovom članku. Skener ima druge metode i druge primitivne metode podataka - pogledajte kasnije.

Dodjeljivanje unosa varijabli

Unos se može dodijeliti varijabli, kako pokazuje sljedeći kod:

uvoz java.util.Skener;

javnost razredRazred{
javnost statički poništitiglavni( Niz []args) {
Skener skeniranjeObj= noviSkener( Sustav .u);

Sustav .van.ispisati('Unesite ime:');
Niz Ime=scanObj.nextLine();

Sustav .van.ispisati('Unesite dob:');
intdob=scanObj.nextInt();

Sustav .van.ispisati('Unesite plaću:');
dvostrukoplaća=scanObj.nextDouble();

Sustav .van.println('Ime: ' +Ime+ ', Dob: ' +dob+ ', Plaća: ' +plaća);

scanObj.Zatvoriti();
}
}

Zaključak

Skener u Javi je klasa u paketu java.util. Ova klasa ima za cilj čitanje unosa sa niza, tipkovnice, datoteke ili mrežne utičnice. Ovaj se članak uglavnom koncentrirao na čitanje unosa s tipkovnice i prikaz rezultata u prozoru terminala. Slične ideje mogu se koristiti za čitanje unosa iz niza, datoteke ili mrežnog kanala.

Za čitanje cijelog retka unosa s tipkovnice upotrijebite metodu nextLine (). Linija kao niz može se podijeliti u tokene, koristeći metode hasNext () i next (), te while petlju. Zadani razdjelnik za podjelu je prostor, ali programer može odabrati neki drugi razdjelnik. Ne zaboravite učiniti Ctrl+z da zaustavite while petlju, ako je potrebno. Uklanjanje početnih i krajnjih razmaka može se izvršiti pomoću drugih shema koje nisu obrađene u ovom članku. Provjera tokena može se izvršiti i pomoću drugih shema koje nisu obrađene u ovom članku.

Primitivne vrijednosti mogu se čitati pomoću nextBoolean (), nextByte (), nextInt () itd. Ove metode nextXXX () vrše provjeru valjanosti i uklanjaju početne i krajnje razmake.

Java skener ima mnogo više metoda. Međutim, osnovna uporaba skenera objašnjena je u ovom članku. Odabir žetona zapravo se vrši tehnikama regularnog izraza. O korištenju tehnika regularnog izražavanja raspravlja se, neki drugi put.