Quan programeu en Java o en qualsevol altre llenguatge, és probable que hàgiu d’utilitzar la informació d’entrada d’un usuari. Java proporciona molts mètodes diferents per obtenir informació de l'usuari, però el mètode més comú i potser el més fàcil d'implementar és utilitzar l'objecte Scanner.
Passos
Mètode 1 de 2: vídeos
Pas 1. Importeu la classe Scanner
Podeu importar el fitxer
java.util. Scanner
classe o la totalitat
java.util
paquet. Per importar una classe o un paquet, afegiu una de les línies següents al principi del vostre codi:
importar java.util. Scanner; // Això només importarà la classe Scanner. importa java.util. *; // Això importarà tot el paquet java.util.
Pas 2. Inicialitzeu un nou objecte de l'escàner passant el
System.in
flux d'entrada al constructor.
System.in
és el flux d’entrada estàndard que ja està obert i està preparat per subministrar dades d’entrada. Normalment, aquest flux correspon a l'entrada de teclat.
Scanner userInputScanner = nou escàner (System.in);
Pas 3. Llegiu diferents tipus de dades d'entrada que l'usuari introdueix
La classe Scanner admet obtenir primitives com int, byte, short, long a més d'obtenir cadenes.
-
A continuació, es detallen alguns mètodes disponibles a la classe Scanner:
-
Llegiu un byte -
nextByte ()
-
Llegiu un breu -
nextShort ()
-
Llegiu un int -
nextInt ()
-
Llegiu una llarga -
nextLong ()
-
Llegiu un flotador -
nextFloat ()
-
Llegiu un doble -
nextDouble ()
-
Llegiu un booleà -
nextBoolean ()
-
Llegiu una línia completa -
nextLine ()
-
Llegiu una paraula -
Pròxim()
-
-
Aquí teniu un exemple d’un programa que utilitza diferents mètodes de la classe Scanner per obtenir diferents tipus d’entrada:
importar java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nou escàner Scanner userInputScanner = nou escàner (System.in); // Provant nextLine (); System.out.println ("\ nCom es diu?"); Nom de la cadena = userInputScanner.nextLine (); // Provant nextInt (); System.out.print ("Quants gats tens?"); int numberOfCats = userInputScanner.nextInt (); // Provant nextDouble (); System.out.print ("Quants diners hi ha a la cartera? $"); doble dinerInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHola" + nom + "! Teniu" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + "a la vostra cartera. / N"); }}
Mètode 2 de 2: Gestió d'excepcions
Pas 1. Gestioneu les excepcions d'entrada
An
InputMismatchException
es llença quan l'usuari introdueix dades que no coincideixen amb el tipus sol·licitat. Per exemple, si l'usuari introdueix una cadena quan es demana una int, el programa llançarà una
InputMismatchException
i sortir. Hi ha diverses maneres de gestionar aquesta excepció i resoldre aquest problema de manera que el vostre programa pugui ser infal·lible.
Pas 2. Utilitzeu un bloc de captura per gestionar el fitxer
InputMismatchException
.
importació java.util. InputMismatchException; importar java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nou escàner Scanner userInputScanner = nou escàner (System.in); // Provant nextLine (); System.out.print ("\ nCom es diu?"); Nom de la cadena = userInputScanner.nextLine (); // Provant nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Quants gats tens?"); proveu {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Provant nextDouble (); validInput = fals; doble diners a Wallet = 0,0; while (! validInput) {System.out.print ("Quants diners hi ha a la cartera? $"); proveu {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHola" + nom + "! Teniu" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + "a la vostra cartera. / n "); }}
Tingueu en compte que hem d’importar
java.util. InputMismatchException
per tal d'utilitzar el fitxer
InputMismatchException
Sumant
userInputScanner.nextLine ();
Pas 3. També podeu fer que l’entrada de l’usuari sigui infal·lible prenent només les següents línies de l’escàner
D’aquesta manera, podem assegurar-nos que tot el que retorna l’escàner sigui un objecte de cadena i no creï cap excepció. A continuació, per convertir les cadenes a enters o dobles, podem utilitzar les classes Integer i Double wrapper.
importar java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nou escàner Scanner userInputScanner = nou escàner (System.in); // Provant nextLine (); System.out.print ("\ nCom es diu?"); Nom de la cadena = userInputScanner.nextLine (); // Provant nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Quants gats tens?"); Cadena d'entrada = userInputScanner.nextLine (); proveu {numberOfCats = Enter.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Provant nextDouble (); validInput = fals; doble diners a Wallet = 0,0; while (! validInput) {System.out.print ("Quants diners hi ha a la cartera? $"); Cadena d'entrada = userInputScanner.nextLine (); prova {moneyInWallet = Double.parseDouble (entrada); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHola" + nom + "! Teniu" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "i $" + moneyInWallet + "a la vostra cartera. / n "); }}
Tingueu en compte que aquí no hem hagut d'importar el fitxer
NumberFormatException
Tampoc no hem hagut d'esborrar la memòria intermèdia mitjançant
userInputScanner.nextLine ();
Consells
- Consulteu l’API de l’escàner per obtenir més informació sobre l’ús de la classe de l’escàner.
- Utilitzeu sempre.next () en lloc de.nextLine () per llegir la paraula següent, ja que.nextLine () pot ser un error.