A szkenner használata Java -ban

How Use Scanner Java



A Java szkenner a java.util csomag egyik osztálya. Ennek az osztálynak a célja a bemenet olvasása egy karakterláncból, a billentyűzetből, a fájlból vagy a hálózati aljzatból. Ez a cikk csak a billentyűzetről származó bemenet olvasására és az eredmény megjelenítésére koncentrál a terminál ablakában. Hasonló ötletek használhatók a fájl vagy hálózati csatorna bemenetének olvasására. A lapolvasó nem nyomtat a terminál ablakba. A terminálra történő nyomtatáshoz használja a System.out objektumot. Egyszerűen használható ez az objektum a terminálra történő nyomtatáshoz, az alábbi ábra szerint.

A Scanner osztály használatához először importálni kell. Ezt követően egy tárgyat kell példányosítani belőle. A Scanner objektum használata után be kell zárni. A billentyűzetet képviselő bemeneti adatfolyam -objektum a System.in. A szkenner számos módszerrel rendelkezik. Ebben a cikkben csak a leggyakrabban használtat ismertetjük.







Cikk tartalma



A szkenner osztály egyszerű használata

A következő kód kéri a felhasználót, hogy írjon be egy mondatot, majd megjeleníti a mondatot:



import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Szkenner scanObj= újScanner( Rendszer .ban ben);
Rendszer .ki.println('Írjon be egy mondatot, és nyomja le az Enter billentyűt:');

Húr mondat=scanObj.nextLine();
Rendszer .ki.println(mondat);

scanObj.Bezárás();
}
}

Az első sor a Scanner osztályt importálja. A fő funkcióban az első sor létrehoz egy szkenner objektumot a System.in objektum használatával a billentyűzethez. Amint a szkenner objektum létrejön, elkezd várni a bevitelre. A következő sor kinyomtat egy utasítást, és arra kéri a felhasználót, hogy írjon be egy mondatot. A kódban következő sor a szkenner objektum nextLine () metódusát használja a felhasználó mondatának beolvasására, miután lenyomta az Enter billentyűt. A kód utáni sor újraírja a mondatot a terminál ablakában. Az utolsó sor bezárja a szkenner objektumot.





A bemeneti vonal értékekre köpése

A következő kód szétválasztja a beviteli sort szavakra (tokenekre), a szóközt határolóként használva:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Szkenner scanObj= újScanner( Rendszer .ban ben);
Rendszer .ki.println('Írjon be egy token sort, és nyomja meg az Enter billentyűt:');

míg(scanObj.hasNext()){
Rendszer .ki.println(scanObj.következő());
}

scanObj.Bezárás();
}
}

A hasNext () és a next () a szkennerobjektum két másik módszere. Amikor a szkenner objektum olvas egy sort, megtartja azt. next () a következő tokenhez (szóhoz) fér hozzá. A hasNext () igaz értéket ad vissza, ha van más, még nem használt jogkivonat.



Sajnos a felhasználónak továbbra is be kell írnia a bemenetet a felosztáshoz és a megjelenítéshez ezzel a kóddal. Ennek befejezéséhez nyomja le a Ctrl+z billentyűkombinációt, és vissza kell térnie a parancssorba.

A fenti kódban a határoló elválasztja a tokeneket a térben. Más karakter is használható. A következő kód vesszőt használ. Ne felejtse el megnyomni a Ctrl+z billentyűt a ciklus befejezéséhez, ha teszteli a kódot.

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Szkenner scanObj= újScanner( Rendszer .ban ben);
Rendszer .ki.println('Írjon be egy token sort, és nyomja meg az Enter billentyűt:');

scanObj.useDelimiter(',');

míg(scanObj.hasNext()){
Rendszer .ki.println(scanObj.következő());
}

scanObj.Bezárás();
}
}

Ha tesztelte a kódot, észrevette volna, hogy a tokenekben lévő szóközök szerepelnek a tokenek (kimenet) részeként. A kifejezés, scanObj.useDelimiter (,); a beviteli sor elolvasása után gépelni; ez teszi a vesszőt, az elválasztót.

Primitív adattípusok olvasása és érvényesítése

nextBoolean () metódus

A következő kódban a felhasználónak igaz vagy hamis értéket kell beírnia idézőjelek nélkül, majd nyomja meg az Enter billentyűt, ha a felhasználó mást ír be, például igen vagy nem, hibaüzenet jelenik meg.

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.nyomtatás('24 felett vagy? ');
Szkenner scanObj= újScanner( Rendszer .ban ben);

booleanbl=scanObj.nextBoolean();
ha (bl== igaz) {
Rendszer .ki.println('24 évesnél idősebb');
}
más ha (bl== hamis) {
Rendszer .ki.println('24 év alatti vagy');
}

scanObj.Bezárás();
}
}

Mivel a java hibaüzenetet ad ki mindaddig, amíg a bemenet nem igaz vagy hamis, a else ha a más helyett lett használva.

A különbség a nyomtatás és a println módszerek között az, hogy a print az aktuális sor bemenetét várja, míg a println a következő sor bemenetét.

nextByte () metódus

Az ASCII karakterkészlettel a karakter egy bájtos. Néhány keleti karakterkészletnél azonban egy karakter több bájtból állhat. A karakterkészlettől függetlenül a nextByte metódus beolvassa és érvényesíti a bemenet következő bájtját. Erre a célra a következő kód használható:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.nyomtatás('Típusszám<128, press Enter: ');
Szkenner scanObj= újScanner( Rendszer .ban ben);

bytebt=scanObj.nextByte();
Rendszer .ki.println(bt);

scanObj.Bezárás();
}
}

Ha 127 -nél nagyobb számot vagy ábécé karaktert ad meg ehhez a kódhoz, hibaüzenet jelenik meg.

nextInt () módszer

A következő egész szám token bemenetként is érvényesíthető és elfogadható. A következő kód használható:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.nyomtatás('Írjon be minden egész számot:');
Szkenner scanObj= újScanner( Rendszer .ban ben);

intaz egyiken=scanObj.nextInt();
Rendszer .ki.println(az egyiken);

scanObj.Bezárás();
}
}

A vezető vagy a záró szóközöket eltávolítottuk. Ennél a kódnál minden egész érték elfogadható, beleértve a 127 -nél nagyobb értékeket is. Ezekkel a következőXXX () metódusokkal az ellenőrzés sikertelensége után hibaüzenet jelenik meg.

nextBigInteger () módszer

Úgy tűnik, hogy a szoftvermérnökök soha nem hagyják abba az új dolgokat. A nagy egész olyan egész szám, amelynek értéke sokkal nagyobb, mint egy egész. A Java -val azonban ugyanúgy olvasható, mint az egész szám. A következő kód ezt szemlélteti:

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

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.println('Írjon be minden egész számot a nagy egész számhoz:');
Szkenner scanObj= újScanner( Rendszer .ban ben);

BigInteger az egyiken=scanObj.nextBigInteger();
Rendszer .ki.println(az egyiken);

scanObj.Bezárás();
}
}

Jegyezze meg az import nyilatkozatot, import java.math.BigInteger ;. Ezenkívül vegye figyelembe, hogy a nagy egész típusú B kezdőbetűvel kezdődik, és nem kisbetűvel.

nextFloat () módszer

A következő float token bemenetként is érvényesíthető és elfogadható. A következő kód használható:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.nyomtatás('Adja meg bármelyik úszót:');
Szkenner scanObj= újScanner( Rendszer .ban ben);

úszóaz egyiken=scanObj.nextFloat();
Rendszer .ki.println(az egyiken);

scanObj.Bezárás();
}
}

Az úszószámra példa a 23.456. A vezető vagy a záró szóközöket eltávolítottuk.

nextDouble ()

A következő dupla token bemenetként is érvényesíthető és elfogadható. A következő kód használható:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.nyomtatás('Írjon be minden duplát:');
Szkenner scanObj= újScanner( Rendszer .ban ben);

kettősaz egyiken=scanObj.nextDouble();
Rendszer .ki.println(az egyiken);

scanObj.Bezárás();
}
}

A kettős számra példa a 23.456. A kettős szám különbözik a lebegéstől, mert kevesebb a hibahatára. A vezető vagy a záró szóközöket eltávolítottuk.

nextLine () metódus

A nextLine () metódus egy karakterláncra vonatkozik. Ha a karakterlánc a billentyűzet beviteli sora az Enter megnyomása után, akkor az új sor karaktere, „ n” lehet. A következő kód használható:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Rendszer .ki.println('Írjon be egy sort\n: ');
Szkenner scanObj= újScanner( Rendszer .ban ben);

Húr o=scanObj.nextLine();
Rendszer .ki.println(o);

scanObj.Bezárás();
}
}

Figyeljük meg, hogy a karakterlánc típusa az S nagybetűvel kezdődik, és nem a kisbetűvel.

A nextLine (), hasNext () és next () metódusokat korábban már használtuk ebben a cikkben. A szkenner más módszerekkel és primitív adatmódszerekkel is rendelkezik - lásd később.

Bemenet hozzárendelése egy változóhoz

A bemenet hozzárendelhető egy változóhoz, amint azt a következő kód mutatja:

import java.util.Scanner;

nyilvános osztályOsztály{
nyilvános statikus üresfő-( Húr []args) {
Szkenner scanObj= újScanner( Rendszer .ban ben);

Rendszer .ki.nyomtatás('Írja be a nevét:');
Húr név=scanObj.nextLine();

Rendszer .ki.nyomtatás('Adja meg az életkort:');
intkor=scanObj.nextInt();

Rendszer .ki.nyomtatás('Fizetés megadása:');
kettősfizetés=scanObj.nextDouble();

Rendszer .ki.println('Név:' +név+ ', Kor:' +kor+ ', Fizetés: ' +fizetés);

scanObj.Bezárás();
}
}

Következtetés

A Java szkenner a java.util csomag egyik osztálya. Ennek az osztálynak a célja a bemenet olvasása egy karakterláncból, a billentyűzetből, a fájlból vagy a hálózati aljzatból. Ez a cikk elsősorban a billentyűzetről származó bemenet olvasására és az eredmény megjelenítésére összpontosított a terminál ablakában. Hasonló ötletek használhatók a karakterlánc, fájl vagy hálózati csatorna bemenetének olvasására.

A billentyűzetbemenet teljes sorának elolvasásához használja a nextLine () metódust. A sor mint karakterlánc felosztható tokenekre a hasNext () és a next () metódusok, valamint a while ciklus használatával. A felosztás alapértelmezett határolója a szóköz, de a programozó választhat más elválasztót is. Ne felejtse el a Ctrl+z billentyűkombinációt leállítani a while ciklusban, ha szükséges. A vezető és a záró szóközök eltávolítása történhet más, a cikkben nem szereplő sémákkal. A tokenek érvényesítése más, a cikkben nem tárgyalt sémák használatával is elvégezhető.

A primitív értékek a nextBoolean (), nextByte (), nextInt () stb.

A Java szkenner számos más módszert is tartalmaz. A lapolvasó alapvető használatát azonban ebben a cikkben ismertettük. A token kiválasztása valójában reguláris kifejezési technikákkal történik. A reguláris kifejezési technikák használata vita, máskor.