Al programar en Java o en cualquier otro lenguaje, lo más probable es que necesite utilizar la información de entrada de un usuario. Java proporciona muchos métodos diferentes para obtener información del usuario, pero el método más común y quizás el más fácil de implementar es usar el objeto Scanner.
Pasos
Método 1 de 2: vídeos
Paso 1. Importe la clase de escáner
Puede optar por importar el
java.util. Scanner
clase o toda la
java.util
paquete. Para importar una clase o un paquete, agregue una de las siguientes líneas al principio de su código:
import java.util. Scanner; // Esto importará solo la clase Scanner. importar java.util. *; // Esto importará todo el paquete java.util.
Paso 2. Inicialice un nuevo objeto de escáner pasando el
System.in
flujo de entrada al constructor.
System.in
es el flujo de entrada estándar que ya está abierto y listo para suministrar datos de entrada. Normalmente, esta secuencia corresponde a la entrada del teclado.
Escáner userInputScanner = nuevo escáner (System.in);
Paso 3. Leer diferentes tipos de datos de entrada que ingresa el usuario
La clase Scanner admite la obtención de primitivas como int, byte, short, long además de obtener cadenas.
-
A continuación, se muestran algunos métodos que están disponibles a través de la clase Scanner:
-
Leer un byte -
nextByte ()
-
Leer un breve -
nextShort ()
-
Leer un int -
nextInt ()
-
Leer un largo -
nextLong ()
-
Leer un flotador -
nextFloat ()
-
Leer un doble -
nextDouble ()
-
Leer un booleano -
nextBoolean ()
-
Leer una línea completa -
línea siguiente()
-
Leer una palabra -
Siguiente()
-
-
Aquí hay un ejemplo de un programa que usa diferentes métodos de la clase Scanner para obtener diferentes tipos de entrada:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nuevo Scanner Scanner userInputScanner = new Scanner (System.in); // Probando nextLine (); System.out.println ("\ n¿Cómo se llama?"); Nombre de cadena = userInputScanner.nextLine (); // Probando nextInt (); System.out.print ("¿Cuántos gatos tienes?"); int numberOfCats = userInputScanner.nextInt (); // Probando nextDouble (); System.out.print ("¿Cuánto dinero hay en su billetera? $"); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHello" + name + "! Tienes" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "y $" + moneyInWallet + "en tu billetera. / N"); }}
Método 2 de 2: Manejo de excepciones
Paso 1. Manejar las excepciones de entrada
Un
InputMismatchException
se lanza cuando el usuario ingresa datos que no coinciden con el tipo solicitado. Por ejemplo, si el usuario ingresa un String cuando se solicita un int, el programa lanzará un
InputMismatchException
y salir. Hay varias formas de manejar esta excepción y resolver este problema para que su programa sea infalible.
Paso 2. Utilice un bloque try-catch para manejar el
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nuevo Scanner Scanner userInputScanner = new Scanner (System.in); // Probando nextLine (); System.out.print ("\ n¿Cómo te llamas?"); Nombre de cadena = userInputScanner.nextLine (); // Probando nextInt (); booleano validInput = falso; int numberOfCats = 0; while (! validInput) {System.out.print ("¿Cuántos gatos tienes?"); intente {numberOfCats = userInputScanner.nextInt (); validInput = verdadero; } captura (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Probando nextDouble (); validInput = falso; double moneyInWallet = 0.0; while (! validInput) {System.out.print ("¿Cuánto dinero hay en su billetera? $"); intente {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = verdadero; } captura (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHola" + nombre + "! Tienes" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "y $" + moneyInWallet + "en tu billetera. / norte"); }}
Tenga en cuenta que tenemos que importar
java.util. InputMismatchException
para utilizar el
InputMismatchException
Añadiendo
userInputScanner.nextLine ();
Paso 3. Alternativamente, haga que la entrada del usuario sea infalible tomando solo las siguientes líneas del escáner
De esta manera, podemos asegurarnos de que todo lo que devuelve el escáner sea un objeto String y no creará ninguna excepción. Luego, para convertir las cadenas en enteros o dobles, podemos usar las clases de envoltura Integer y Double.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar un nuevo Scanner Scanner userInputScanner = new Scanner (System.in); // Probando nextLine (); System.out.print ("\ n¿Cómo se llama?"); Nombre de cadena = userInputScanner.nextLine (); // Probando nextInt (); booleano validInput = falso; int numberOfCats = 0; while (! validInput) {System.out.print ("¿Cuántos gatos tienes?"); Entrada de cadena = userInputScanner.nextLine (); try {numberOfCats = Integer.parseInt (entrada); validInput = verdadero; } catch (NumberFormatException e) {validInput = false; }} // Probando nextDouble (); validInput = falso; double moneyInWallet = 0.0; while (! validInput) {System.out.print ("¿Cuánto dinero hay en su billetera? $"); Entrada de cadena = userInputScanner.nextLine (); intente {moneyInWallet = Double.parseDouble (entrada); validInput = verdadero; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHola" + nombre + "! Tienes" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "y $" + moneyInWallet + "en tu billetera. / norte"); }}
Tenga en cuenta que aquí no tuvimos que importar el
NumberFormatException
Tampoco tuvimos que borrar el búfer usando
userInputScanner.nextLine ();
Consejos
- Consulte Scanner API para obtener más información sobre el uso de la clase Scanner.
- Utilice siempre.next () en lugar de.nextLine () para leer la siguiente palabra, ya que.nextLine () puede tener errores.