Cum se utilizează scanerul în Java

How Use Scanner Java



Scannerul în Java este o clasă din pachetul java.util. Această clasă își propune să citească intrarea dintr-un șir, tastatură, fișier sau soclu de rețea. Acest articol se concentrează numai pe citirea intrărilor de la tastatură și afișarea rezultatului în fereastra terminalului. Idei similare pot fi folosite pentru a citi intrările din fișier sau din canalul de rețea. Scannerul nu imprimă în fereastra terminalului. Pentru a imprima pe terminal, utilizați obiectul System.out. Este simplu să utilizați acest obiect pentru a imprima pe terminal, așa cum este ilustrat mai jos.

Pentru a utiliza clasa Scanner, trebuie mai întâi importată. După aceea, un obiect trebuie instanțiat din el. După utilizarea obiectului Scanner, acesta trebuie închis. Obiectul fluxului de intrare care reprezintă tastatura este System.in. Scannerul are multe metode. Numai cele utilizate în mod obișnuit vor fi explicate în acest articol.







Conținutul articolului



Utilizare simplă a clasei Scanner

Următorul cod solicită utilizatorului să introducă o propoziție și apoi afișează propoziția:



import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Scanare scaner Obj= nouScanner( Sistem .în);
Sistem .afară.println(„Tastați o propoziție și apăsați Enter:”);

Şir propoziție=scanObj.nextLine();
Sistem .afară.println(propoziție);

scanObj.închide();
}
}

Prima linie importă clasa Scanner. În funcția principală, prima linie creează un obiect scaner folosind obiectul System.in pentru tastatură. De îndată ce obiectul scanerului este creat, acesta începe să aștepte introducerea. Următoarea linie tipărește o declarație, cerând utilizatorului să introducă o propoziție. Linia care urmează în cod folosește metoda nextLine () a obiectului scanerului pentru a citi propoziția utilizatorului după ce apasă Enter. Linia de după, în cod, reimprimă propoziția la fereastra terminalului. Ultima linie închide obiectul scanerului.





Scuipând linia de intrare în valori

Următorul cod împarte linia de intrare în cuvinte (jetoane), folosind spațiul ca delimitator:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Scanare scaner Obj= nouScanner( Sistem .în);
Sistem .afară.println(„Tastați o linie de jetoane și apăsați Enter:”);

in timp ce(scanObj.hasNext()){
Sistem .afară.println(scanObj.Următorul());
}

scanObj.închide();
}
}

hasNext () și next () sunt alte două metode ale obiectului scanerului. Când obiectul scanerului citește o linie, o păstrează. next () accesează următorul simbol (cuvânt). hasNext () returnează true dacă există un alt simbol care nu a fost încă accesat.



Din păcate, se așteaptă ca utilizatorul să introducă intrarea pentru divizare și afișare din nou cu acest cod. Pentru a termina toate acestea, apăsați Ctrl + z și ar trebui să vă întoarceți la promptul de comandă.

În codul de mai sus, delimitatorul separă jetoanele din spațiu. Se poate folosi un alt personaj. Următorul cod folosește virgula. Nu uitați să apăsați Ctrl + z pentru a termina bucla dacă testați codul.

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Scanare scaner Obj= nouScanner( Sistem .în);
Sistem .afară.println(„Tastați o linie de jetoane și apăsați Enter:”);

scanObj.useDelimiter(',');

in timp ce(scanObj.hasNext()){
Sistem .afară.println(scanObj.Următorul());
}

scanObj.închide();
}
}

Dacă ați testat codul, ați fi observat că spațiile din jetoane au fost incluse ca parte a jetoanelor (ieșire). Expresia scanObj.useDelimiter (,); tastat după ce linia de intrare a fost citită; este ceea ce face virgula, delimitatorul.

Citirea și validarea tipurilor de date primitive

metoda nextBoolean ()

În următorul cod, se așteaptă ca utilizatorul să scrie fie adevărat sau fals fără ghilimele și apoi să apese tasta Enter dacă utilizatorul tastează altceva, cum ar fi da sau nu, va fi afișat un mesaj de eroare.

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.imprimare('Ai peste 24 de ani? ');
Scanare scaner Obj= nouScanner( Sistem .în);

booleanbl=scanObj.nextBoolean();
dacă (bl== Adevărat) {
Sistem .afară.println(„Ai peste 24 de ani”);
}
altceva dacă (bl== fals) {
Sistem .afară.println(„Ai sub 24 de ani”);
}

scanObj.închide();
}
}

Deoarece java va emite un mesaj de eroare atâta timp cât intrarea nu este adevărată sau falsă exact, else if a fost folosit în loc de else.

Diferența dintre metode, print și println, este că print așteaptă intrarea pe linia curentă, în timp ce println așteaptă intrarea pe linia următoare.

metoda nextByte ()

Cu setul de caractere ASCII, un caracter este un octet. Cu toate acestea, cu unele seturi de caractere orientale, un caracter poate consta din mai mult de un octet. Independent de setul de caractere, metoda nextByte citește și validează următorul octet al intrării. Următorul cod poate fi utilizat în acest scop:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.imprimare(„Tastați numărul<128, press Enter: ');
Scanare scaner Obj= nouScanner( Sistem .în);

octetbt=scanObj.nextByte();
Sistem .afară.println(bt);

scanObj.închide();
}
}

Dacă pentru acest cod este introdus un număr mai mare de 127 sau un caracter alfabet, va fi emis un mesaj de eroare.

Metoda nextInt ()

Următorul simbol întreg ca intrare poate fi validat și acceptat. Se poate utiliza următorul cod:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.imprimare(„Introduceți orice număr întreg:”);
Scanare scaner Obj= nouScanner( Sistem .în);

intpe unu=scanObj.nextInt();
Sistem .afară.println(pe unu);

scanObj.închide();
}
}

Spațiile de conducere sau de spate au fost eliminate. Pentru acest cod, orice valoare întreagă, inclusiv valori mai mari de 127, ar fi acceptată. Cu aceste metode nextXXX (), odată ce validarea eșuează, este emis un mesaj de eroare.

Metoda nextBigInteger ()

Se pare că inginerii de software nu vor înceta niciodată să vină cu lucruri noi. Un număr întreg mare este un număr întreg a cărui valoare este mult mai mare decât cea a unui număr întreg. Cu toate acestea, cu Java, poate fi citit în același mod ca întregul. Următorul cod ilustrează acest lucru:

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

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.println(„Introduceți orice întreg pentru Big Integer:”);
Scanare scaner Obj= nouScanner( Sistem .în);

BigInteger pe unu=scanObj.nextBigInteger();
Sistem .afară.println(pe unu);

scanObj.închide();
}
}

Rețineți declarația de import, import java.math.BigInteger ;. De asemenea, rețineți că tipul întregului mare este început cu o majusculă B și nu cu o minusculă b.

nextFloat () Metodă

Următorul jeton float ca intrare poate fi validat și acceptat. Se poate utiliza următorul cod:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.imprimare(„Introduceți orice plutitor:”);
Scanare scaner Obj= nouScanner( Sistem .în);

plutipe unu=scanObj.nextFloat();
Sistem .afară.println(pe unu);

scanObj.închide();
}
}

Un exemplu de număr flotant este 23.456. Spațiile de conducere sau de spate au fost eliminate.

nextDouble ()

Următorul simbol dublu ca intrare poate fi validat și acceptat. Se poate utiliza următorul cod:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.imprimare(„Introduceți orice dublă:”);
Scanare scaner Obj= nouScanner( Sistem .în);

dublape unu=scanObj.nextDouble();
Sistem .afară.println(pe unu);

scanObj.închide();
}
}

Un exemplu de număr dublu este 23.456. Un număr dublu este diferit de un float, deoarece are o marjă de eroare mai mică. Spațiile de conducere sau de spate au fost eliminate.

metoda nextLine ()

Metoda nextLine () este pentru un șir. Dacă șirul este linia de intrare de la tastatură după apăsarea Enter, acesta poate avea caracterul de linie nouă, „ n”. Se poate utiliza următorul cod:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Sistem .afară.println('Introduceți o linie având\n: ');
Scanare scaner Obj= nouScanner( Sistem .în);

Şir str=scanObj.nextLine();
Sistem .afară.println(str);

scanObj.închide();
}
}

Observați că tipul șirului începe cu majuscula S și nu cu minuscule.

Metodele nextLine (), hasNext () și next () au fost utilizate anterior în acest articol. Scanerul are alte metode și alte metode primitive de date - vezi mai târziu.

Atribuirea intrării unei variabile

Intrarea poate fi atribuită unei variabile, după cum arată următorul cod:

import java.util.Scanner;

public clasăClasa{
public static nulprincipal( Şir []argumente) {
Scanare scaner Obj= nouScanner( Sistem .în);

Sistem .afară.imprimare('Introdu numele: ');
Şir Nume=scanObj.nextLine();

Sistem .afară.imprimare(„Introduceți vârsta:”);
intvârstă=scanObj.nextInt();

Sistem .afară.imprimare(„Introduceți salariul:”);
dublasalariu=scanObj.nextDouble();

Sistem .afară.println('Nume: ' +Nume+ ', Vârstă:' +vârstă+ ', Salariu:' +salariu);

scanObj.închide();
}
}

Concluzie

Scannerul în Java este o clasă din pachetul java.util. Această clasă își propune să citească intrarea dintr-un șir, tastatură, fișier sau soclu de rețea. Acest articol s-a concentrat în principal pe citirea intrărilor de pe tastatură și afișarea rezultatului în fereastra terminalului. Idei similare pot fi folosite pentru a citi intrările din șir, fișier sau canal de rețea.

Pentru a citi întreaga linie de intrare de la tastatură, utilizați metoda nextLine (). Linia ca șir poate fi împărțită în jetoane, utilizând metodele hasNext () și next () și bucla while. Delimitatorul implicit pentru împărțire este spațiul, dar programatorul poate alege un alt delimitator. Nu uitați să faceți Ctrl + z pentru a opri bucla while, dacă este necesar. Îndepărtarea spațiilor de conducere și de urmărire se poate face folosind alte scheme care nu sunt abordate în acest articol. Validarea jetoanelor se poate face și folosind alte scheme care nu sunt abordate în acest articol.

Valorile primitive pot fi citite folosind nextBoolean (), nextByte (), nextInt (), etc. Aceste metode nextXXX () fac validare și, de asemenea, elimină spațiile principale și finale.

Scannerul Java are mult mai multe metode. Cu toate acestea, utilizarea de bază a scanerului a fost explicată în acest articol. Selectarea unui jeton se face de fapt folosind tehnici de expresie regulată. Utilizarea tehnicilor de exprimare regulată este discuție, pentru o altă dată.