Clasa Scanner în Java
Clasa Scanner în Java

Ai auzit de clasa Scanner în limbajul Java? Dar oare știi ce este o clasă? Pentru început, îți recomand articolul „O clasă în Java”.

Limbajul Java este unul interesant spre foarte util și eficient. Îți pun la dispoziție și articolul „De ce să înveți Java?”.

Până acum, ai întâlnit articole de nivel mediu, poate chiar cu un conținut ușor de înțeles… Fii pe pace, nu mă gândesc momentan să scriu articole pe subiecte grele. Clasa Scanner îți oferă șansa să interacționezi cu programul…

Ce face un scaner? Imprimă sau copiază un document în format fizic și îl transpune în format digital. Scanarea unui document are la bază două etape:

  1. Citirea datelor
  2. Stocarea datelor

La fel se-ntâmplă și cu ajutorul clasei Scanner. Utilizatorul va putea să introducă date în program, iar acele date vor fi stocate în memorie.

Clasa Scanner se găsește în pachetul java.util. Pentru a folosi clasa Scanner, mai întâi trebuie să importăm pachetul, apoi să creăm un obiect și ulterior să ne folosim de obiectul creat…

Cum se importă o clasă sau un pachet? Foarte simplu! Doar scrii cuvântul import și apoi pachetul care conține clasa pe care vrei să o utilizezi. În cazul nostru, importăm clasa Scanner astfel:

import java.util.Scanner;

Pentru a avea acces la toate clasele din interiorul pachetului java.util, putem să folosim simbolul * (steluță):

import java.util.*;

Ce facem mai apoi? Creăm un obiect cu ajutorul clasei Scanner.

Scanner sc = new Scanner(System.in);

Cum se creează un obiect? Scriem întâi numele clasei, apoi alegem un nume de variabilă, punem semnul egal, scriem cuvântul new (pentru inițializare), apoi din nou numele clasei, iar în interiorul metodei scriem argumentul System.in, care reprezintă fluxul pentru intrarea datelor cu ajutorul terminalului.

După aceea, declarăm o variabilă și o inițializăm cu obiectul nou creat, iar la noul obiect scriem metoda specifică pentru tipul de date pe care vrem să-l introducem. Exemplu:

 1| import java.util.Scanner;
 2| 
 3| public class Scanare {
 4| 
 5|     public static void main(String[] args) {
 6| 
 7|         Scanner sc = new Scanner(System.in);
 8| 
 9|         System.out.println("Introduceți o cifră de la 1 la 9: ");
10| 
11|         int cifra = sc.nextInt();
12|
13|         System.out.println("Cifra introdusă este: " + cifra);
14|
15|     }
16| }

Ce se-ntâmplă în exemplul anterior? Am făcut prima dată importul pentru pachetul care conține clasa Scanner, apoi avem o clasă (Scanare), iar în interiorul metodei main am creat un obiect pe rândul 7, obiect pe care-l voi folosi ulterior când voi introduce datele…

Așadar, pe rândul 9 anunț utilizatorul să se pregătească de introducerea unei cifre de la 1 la 9, iar pe rândul 11 programul „îngheață”. Cum și de ce? Programul pur și simplu nu face nimic până utilizatorul nu introduce date de la tastatură. În cazul de față, utilizatorul trebuie să introducă o cifră, nu contează dacă scrii o cifră de la 1 la 9 sau un număr de 100 de ori mai mare. Fiind o variabilă de tipul int, programul nu „pușcă” dacă nu respecți condiția impusă de autor. În schimb, dacă introduci un caracter sau mai multe, atunci va apărea o eroare de tipul „InputMismatchException”.

La final, programul va afișa mesajul „Cifra introdusă este: x”, unde x este cifra introdusă de către utilizator. E greu până acum? Hai să-ți mai scriu câte ceva…

Putem introduce orice tip de dată, adică exact tipurile de date primitive în limbajul Java. Îți recomand articolele următoare:

Dacă în exemplul anterior am folosit metoda nextInt() pentru a introduce date de tipul int (pe rândul 11), trebuie să știi că limbajul Java ne pune la dispoziție următoarele metode:

  • nextBoolean() => citește date de tipul boolean;
  • nextByte() => citește date de tipul byte;
  • nextDouble() => citește date de tipul double;
  • nextFloat() => citește date de tipul float;
  • nextInt() => citește date de tipul int;
  • nextLine() => citește date de tipul String (până la capătul liniei, deci nu doar un singur caracter sau un singur cuvânt; pentru citirea unui singur caracter sau a unui singur cuvânt, se folosește metoda next());
  • nextLong() => citește date de tipul long;
  • nextShort() => citește date de tipul short.

Îți las aici un exemplu cu mai multe metode:

 1| import java.util.Scanner;
 2|
 3| public class Scanare() {
 4|
 5|    public static void main(String[] args) {
 6|
 7|        Scanner sc = new Scanner(System.in);    
 8|
 9|        System.out.println("Introduceți o valoare de tipul double: ");
10|        double varDouble = sc.nextDouble();
11|        System.out.println("Valoarea introdusă de tipul double este: " + varDouble + "\n");
12|
13|        System.out.println("Introduceți o valoare de tipul boolean: ");
14|        boolean varBoolean = sc.nextBoolean();
15|        System.out.println("Valoarea introdusă de tipul boolean este: " + varBoolean + "\n");
16| 
17|        System.out.println("Introduceți o valoare de tipul String: ");
18|        String varString = sc.nextLine();
19|        System.out.println("Valoarea introdusă de tipul String este: " + varString + "\n");
20|
21|        sc.close();
22|       }
23| } 

Acest program se oprește de 3 ori. De ce? Păi, de fiecare dată va aștepta ca utilizatorul să introducă datele specificate. Pe rândul 9 se oprește prima dată și trebuie să introduci o valoare de tipul double (cu virgulă), apoi pe rândul 13 se oprește și îți cere să introduci o valoare de tipul boolean (atenție: trebuie să scrii ori true, ori false pentru că orice altă valoare introdusă îți va returna o eroare), iar pe rândul 17 se oprește și îți cere să introduci o valoare de tipul String (un caracter, un cuvânt sau mai multe cuvinte…).

Ai observat ce am scris pe rândul 21? Metoda close() are rolul de a închide instanța creată a obiectului sc pentru a preveni orice scurgeri de date… E recomandat să pui metoda close() imediat după ce ți-ai încheiat treaba cu clasa Scanner

Cum ți se pare utilizarea clasei Scanner? Este foarte utilă când vine vorba de interacționarea directă cu terminalul (sau consola).

Dacă nu ai înțeles ceva, te rog să-mi scrii doleanța într-un comentariu și voi încerca să-ți explic mai în detaliu.

Învață să fii profesionist!

By projava

#JAVA

Abonează-te
Primește notificări pentru
guest
0 Comentarii
Păreri...
Vezi toate comentariile