Când programați în Java sau în orice alt limbaj, cel mai probabil va trebui să utilizați informațiile de intrare de la un utilizator. Java oferă multe metode diferite pentru a obține informații despre utilizatori, dar cea mai comună și probabil cea mai ușoară metodă de implementare este utilizarea obiectului Scanner.
Pași
Metoda 1 din 2: videoclipuri
Pasul 1. Importați clasa Scanner
Puteți alege fie să importați fișierul
java.util. Scanner
clasa sau întreaga
java.util
pachet. Pentru a importa o clasă sau un pachet, adăugați una dintre următoarele rânduri chiar la începutul codului:
import java.util. Scanner; // Aceasta va importa doar clasa Scanner. import java.util. *; // Aceasta va importa întregul pachet java.util.
Pasul 2. Inițializați un nou obiect Scanner prin trecerea
System.in
flux de intrare către constructor.
System.in
este fluxul de intrare standard care este deja deschis și gata să furnizeze date de intrare. De obicei, acest flux corespunde intrării tastaturii.
Scanner userInputScanner = Scanner nou (System.in);
Pasul 3. Citiți diferite tipuri de date de intrare pe care le introduce utilizatorul
Clasa Scanner acceptă obținerea primitivelor precum int, octet, scurt, lung pe lângă obținerea șirurilor.
-
Iată câteva metode disponibile prin clasa Scanner:
-
Citiți un octet -
nextByte ()
-
Citește un scurt -
nextShort ()
-
Citiți un int -
nextInt ()
-
Citește mult -
nextLong ()
-
Citiți un plutitor -
nextFloat ()
-
Citește o dublă -
nextDouble ()
-
Citiți un boolean -
nextBoolean ()
-
Citiți o linie completă -
nextLine ()
-
Citește un cuvânt -
Următorul()
-
-
Iată un exemplu de program care utilizează diferite metode ale clasei Scanner pentru a obține diferite tipuri de intrare:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inițiază un nou Scanner Scanner userInputScanner = nou Scanner (System.in); // Testarea nextLine (); System.out.println ("\ nCum vă chemați?"); Numele șirului = userInputScanner.nextLine (); // Testarea nextInt (); System.out.print („Câte pisici ai?”); int numberOfCats = userInputScanner.nextInt (); // Testarea nextDouble (); System.out.print („Câți bani sunt în portofel? $”); moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nBună ziua" + nume + "! Aveți" + numărOfCats + (numberOfCats> 1? "Pisici": "pisică") + "și $" + moneyInWallet + "în portofel. / N"); }}
Metoda 2 din 2: Manevrarea excepțiilor
Pasul 1. Gestionează excepțiile de intrare
Un
InputMismatchException
este aruncat atunci când utilizatorul introduce date care nu se potrivesc cu tipul solicitat. De exemplu, dacă utilizatorul introduce un șir când este solicitat un int, programul va arunca un
InputMismatchException
și ieși. Există mai multe moduri de a rezolva această excepție și de a rezolva această problemă, astfel încât programul dvs. să fie infailibil.
Pasul 2. Folosiți un bloc de încercare pentru a gestiona
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inițiază un nou Scanner Scanner userInputScanner = nou Scanner (System.in); // Testarea nextLine (); System.out.print ("\ nCum vă chemați?"); Numele șirului = userInputScanner.nextLine (); // Testarea nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Câte pisici ai?”); încercați {numberOfCats = userInputScanner.nextInt (); validInput = adevărat; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testarea nextDouble (); validInput = false; dublu bani În portofel = 0,0; while (! validInput) {System.out.print („Câți bani sunt în portofel? $”); încercați {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = adevărat; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nBună ziua" + nume + "! Aveți" + numberOfCats + (numberOfCats> 1? "Cats": "pisică") + "și $" + moneyInWallet + "în portofel. / n "); }}
Rețineți că trebuie să importăm
java.util. InputMismatchException
pentru a utiliza
InputMismatchException
Se adaugă
userInputScanner.nextLine ();
Pasul 3. Alternativ, faceți ca intrarea utilizatorului să fie infailibilă luând numai rândurile următoare din scaner
În acest fel, ne putem asigura că tot ceea ce returnează scanerul este un obiect șir și nu va crea excepții. Apoi, pentru a converti șirurile în numere întregi sau duble, putem folosi clasele Integer și Double wrapper.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Inițiază un nou Scanner Scanner userInputScanner = nou Scanner (System.in); // Testarea nextLine (); System.out.print ("\ nCum vă chemați?"); Numele șirului = userInputScanner.nextLine (); // Testarea nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Câte pisici ai?”); Șir de intrare = userInputScanner.nextLine (); încercați {numberOfCats = Integer.parseInt (input); validInput = adevărat; } catch (NumberFormatException e) {validInput = false; }} // Testarea nextDouble (); validInput = false; dublu bani În portofel = 0,0; while (! validInput) {System.out.print („Câți bani sunt în portofel? $”); Șir de intrare = userInputScanner.nextLine (); încercați {moneyInWallet = Double.parseDouble (input); validInput = adevărat; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nBună ziua" + nume + "! Aveți" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "și $" + moneyInWallet + "în portofel. / n "); }}
Rețineți că aici nu a trebuit să importăm
NumberFormatException
De asemenea, nu a trebuit să ștergem tamponul folosind
userInputScanner.nextLine ();
sfaturi
- Consultați API-ul Scanner pentru mai multe informații despre utilizarea clasei Scanner.
- Folosiți întotdeauna.next () în loc de.nextLine () pentru a citi cuvântul următor, deoarece.nextLine () poate fi un buggy.