Skannerin käyttäminen Javassa

How Use Scanner Java



Java -skanneri on luokka java.util -paketissa. Tämän luokan tarkoituksena on lukea syötettä merkkijonosta, näppäimistöstä, tiedostosta tai verkkoliittimestä. Tämä artikkeli keskittyy vain näppäimistön syötteen lukemiseen ja tuloksen näyttämiseen pääteikkunassa. Samanlaisia ​​ideoita voidaan käyttää syötteen lukemiseen tiedostosta tai verkkokanavalta. Skanneri ei tulosta pääteikkunaan. Tulosta päätelaitteeseen käyttämällä System.out -objektia. Tämän objektin käyttäminen päätelaitteeseen on helppoa, kuten alla on esitetty.

Skanneriluokan käyttäminen on ensin tuotava. Sen jälkeen objekti on näytettävä siitä. Skanneriobjektin käytön jälkeen se on suljettava. Syöttövirtaobjekti, joka edustaa näppäimistöä, on System.in. Skannerilla on monia menetelmiä. Tässä artikkelissa selitetään vain yleisesti käytetyt.







Artikkelin sisältö



Skanneriluokan yksinkertainen käyttö

Seuraava koodi pyytää käyttäjää kirjoittamaan lauseen ja näyttää sitten lauseen:



tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);
Järjestelmä .ulos.println('Kirjoita lause ja paina Enter:');

Jousisoitin tuomita=scanObj.nextLine();
Järjestelmä .ulos.println(tuomita);

scanObj.kiinni();
}
}

Ensimmäinen rivi tuo Scanner -luokan. Päätoiminnossa ensimmäinen rivi luo skanneriobjektin käyttämällä näppäimistön System.in -objektia. Heti kun skanneriobjekti on luotu, se alkaa odottaa syöttöä. Seuraava rivi tulostaa lausunnon, jossa käyttäjää pyydetään kirjoittamaan lause. Koodin seuraava rivi lukee käyttäjän lauseen skanneriobjektin nextLine () -menetelmän avulla, kun hän painaa Enter -näppäintä. Koodin jälkeinen rivi tulostaa lauseen pääteikkunassa uudelleen. Viimeinen rivi sulkee skanneriobjektin.





Syöttölinjan sylkeminen arvoihin

Seuraava koodi jakaa syöttörivin sanoiksi (tunnuksiksi) käyttämällä välilyöntiä erottimena:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);
Järjestelmä .ulos.println('Kirjoita merkkirivi ja paina Enter:');

sillä aikaa(scanObj.hasNext()){
Järjestelmä .ulos.println(scanObj.Seuraava());
}

scanObj.kiinni();
}
}

hasNext () ja next () ovat kaksi muuta skanneriobjektin menetelmää. Kun skanneriobjekti lukee viivan, se säilyttää sen. next () käyttää seuraavaa tunnusta (sanaa). hasNext () palauttaa arvon true, jos on muita tunnuksia, joita ei ole vielä käytetty.



Valitettavasti käyttäjän odotetaan edelleen kirjoittavan tulon jakamiseen ja näyttämiseen uudelleen tällä koodilla. Lopeta kaikki painamalla Ctrl+z, ja sinun pitäisi palata komentoriville.

Yllä olevassa koodissa erotin erottaa merkkit avaruudessa. Toista merkkiä voidaan käyttää. Seuraava koodi käyttää pilkkua. Älä unohda painaa Ctrl+z lopettaaksesi silmukan, jos testaat koodia.

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);
Järjestelmä .ulos.println('Kirjoita merkkirivi ja paina Enter:');

scanObj.useDelimiter(',');

sillä aikaa(scanObj.hasNext()){
Järjestelmä .ulos.println(scanObj.Seuraava());
}

scanObj.kiinni();
}
}

Jos testasit koodia, olisit huomannut, että merkkien välilyöntejä on sisällytetty osaksi tunnuksia (lähtö). Lauseke, scanObj.useDelimiter (,); kirjoitettu syöttörivin lukemisen jälkeen; se tekee pilkusta, erottimesta.

Primitiivisten tietotyyppien lukeminen ja validointi

nextBoolean () -menetelmä

Seuraavassa koodissa käyttäjän odotetaan kirjoittavan joko tosi tai epätosi ilman lainausmerkkejä ja paina sitten Enter -näppäintä, jos käyttäjä kirjoittaa jotain muuta, kuten kyllä ​​tai ei, virheilmoitus näytetään.

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.Tulosta('Oletko yli 24 -vuotias? '');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

booleanbl=scanObj.seuraavaBoolean();
jos (bl== totta) {
Järjestelmä .ulos.println('Olet yli 24');
}
muu jos (bl== väärä) {
Järjestelmä .ulos.println('Olet alle 24');
}

scanObj.kiinni();
}
}

Koska java antaa virheilmoituksen niin kauan kuin syöte ei ole tosi tai epätosi, else if on käytetty muun sijaan.

Ero menetelmien, print ja println, välillä on, että print odottaa tuloa nykyisellä rivillä, kun taas println odottaa tuloa seuraavalla rivillä.

nextByte () -menetelmä

ASCII -merkistön kanssa merkki on yksi tavu. Joissakin itäisissä merkistöissä merkki voi kuitenkin koostua useammasta tavusta. Merkistöstä riippumatta nextByte -menetelmä lukee ja vahvistaa syötteen seuraavan tavun. Tätä tarkoitusta varten voidaan käyttää seuraavaa koodia:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.Tulosta('' Tyyppinumero<128, press Enter: ');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

tavubt=scanObj.seuraavaByte();
Järjestelmä .ulos.println(bt);

scanObj.kiinni();
}
}

Jos tälle koodille syötetään suurempi numero kuin 127 tai aakkosmerkki, annetaan virheilmoitus.

nextInt () menetelmä

Myös seuraava kokonaislukumerkki syötteenä voidaan vahvistaa ja hyväksyä. Seuraavaa koodia voidaan käyttää:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.Tulosta('Anna mikä tahansa kokonaisluku:');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

intyhdellä=scanObj.seuraavaInt();
Järjestelmä .ulos.println(yhdellä);

scanObj.kiinni();
}
}

Johtavat tai perässä olevat välilyönnit on poistettu. Tämän koodin kohdalla hyväksytään kaikki kokonaislukuarvot, mukaan lukien yli 127: n arvot. Näillä nextXXX () -menetelmillä, kun vahvistus epäonnistuu, annetaan virheilmoitus.

nextBigInteger () -menetelmä

Näyttää siltä, ​​että ohjelmistosuunnittelijat eivät koskaan lakkaa keksimästä uusia asioita. Iso kokonaisluku on kokonaisluku, jonka arvo on paljon suurempi kuin kokonaisluku. Javan kanssa se voidaan kuitenkin lukea samalla tavalla kuin kokonaisluku. Seuraava koodi havainnollistaa tätä:

tuonti java.util.Skanneri;
tuonti java.math.BigInteger;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.println('Syötä mikä tahansa kokonaisluku suurelle kokonaisluvulle:');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

BigInteger yhdellä=scanObj.nextBigInteger();
Järjestelmä .ulos.println(yhdellä);

scanObj.kiinni();
}
}

Huomaa tuontilausunto, tuonti java.math.BigInteger ;. Huomaa myös, että iso kokonaislukutyyppi alkaa isoilla kirjaimilla B eikä pienillä kirjaimilla b.

nextFloat () -menetelmä

Myös seuraava kelluva merkki syötteenä voidaan validoida ja hyväksyä. Seuraavaa koodia voidaan käyttää:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.Tulosta('Syötä mikä tahansa Float:');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

kelluayhdellä=scanObj.nextFloat();
Järjestelmä .ulos.println(yhdellä);

scanObj.kiinni();
}
}

Esimerkki kelluvasta numerosta on 23.456. Johtavat tai perässä olevat välilyönnit on poistettu.

seuraavaDouble ()

Seuraava kaksoistunnus syötteenä voidaan myös validoida ja hyväksyä. Seuraavaa koodia voidaan käyttää:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.Tulosta('Anna mikä tahansa tupla:');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

kaksinkertainenyhdellä=scanObj.seuraavaDouble();
Järjestelmä .ulos.println(yhdellä);

scanObj.kiinni();
}
}

Esimerkki kaksinkertaisesta numerosta on 23.456. Kaksoisluku eroaa kelluvasta, koska siinä on vähemmän virhemarginaalia. Johtavat tai perässä olevat välilyönnit on poistettu.

nextLine () -menetelmä

NextLine () -menetelmä on merkkijonolle. Jos merkkijono on näppäimistön syöttörivi Enter -näppäimen painamisen jälkeen, siinä voi olla uuden rivin merkki . Seuraavaa koodia voidaan käyttää:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Järjestelmä .ulos.println('Kirjoita rivi, jossa on\n: ');
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

Jousisoitin s=scanObj.nextLine();
Järjestelmä .ulos.println(s);

scanObj.kiinni();
}
}

Huomaa, että merkkijonotyyppi alkaa isoilla kirjaimilla S eikä pienillä kirjaimilla s.

NextLine (), hasNext () ja next () menetelmiä on käytetty aiemmin tässä artikkelissa. Skannerissa on muita menetelmiä ja muita primitiivisiä datamenetelmiä - katso myöhemmin.

Syötteen määrittäminen muuttujaan

Tulo voidaan määrittää muuttujalle, kuten seuraava koodi osoittaa:

tuonti java.util.Skanneri;

julkinen luokkaLuokka{
julkinen staattinen mitätöntärkein( Jousisoitin []args) {
Skannerin skannausObj= UusiSkanneri( Järjestelmä .sisään);

Järjestelmä .ulos.Tulosta('Anna nimi:');
Jousisoitin nimi=scanObj.nextLine();

Järjestelmä .ulos.Tulosta('Anna ikä:');
intikä=scanObj.seuraavaInt();

Järjestelmä .ulos.Tulosta('Anna palkka:');
kaksinkertainenpalkka=scanObj.seuraavaDouble();

Järjestelmä .ulos.println('Nimi:' +nimi+ ', Ikä:' +ikä+ ', Palkka:' +palkka);

scanObj.kiinni();
}
}

Johtopäätös

Java -skanneri on luokka java.util -paketissa. Tämän luokan tarkoituksena on lukea syötettä merkkijonosta, näppäimistöstä, tiedostosta tai verkkoliittimestä. Tämä artikkeli on keskittynyt lähinnä näppäimistön syötteen lukemiseen ja tuloksen näyttämiseen pääteikkunassa. Samankaltaisia ​​ideoita voidaan käyttää syötteen lukemiseen merkkijonosta, tiedostosta tai verkkokanavasta.

Jos haluat lukea koko näppäimistön syöttörivin, käytä nextLine () -menetelmää. Rivi merkkijonona voidaan jakaa tokeneiksi käyttämällä hasNext () - ja next () -menetelmiä sekä while -silmukkaa. Halkaisun oletuserotin on välilyönti, mutta ohjelmoija voi valita jonkin muun erottimen. Älä unohda tehdä Ctrl+z tarvittaessa pysäyttääksesi while -silmukan. Etu- ja perätilojen poistaminen voidaan tehdä muilla menetelmillä, joita ei käsitellä tässä artikkelissa. Tunnusten validointi voidaan tehdä myös käyttämällä muita malleja, joita ei käsitellä tässä artikkelissa.

Primitiiviset arvot voidaan lukea käyttämällä nextBoolean (), nextByte (), nextInt () jne. Nämä nextXXX () -menetelmät vahvistavat ja poistavat myös välilyönnit.

Java -skannerissa on monia muita menetelmiä. Skannerin peruskäyttö on kuitenkin selitetty tässä artikkelissa. Valintamerkki valitaan itse asiassa käyttämällä säännöllisiä lauseke tekniikoita. Säännöllisten ilmaisutekniikoiden käyttö on keskustelua, jonkin aikaa.