0% encontró este documento útil (0 votos)
3 vistas6 páginas

Uso de la clase Scanner en Java

Cargado por

pauloport
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas6 páginas

Uso de la clase Scanner en Java

Cargado por

pauloport
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

CLASE SCANNER EN JAVA

Puede sonar a cosa de mundo viejuno, pero hasta la versión Java 1.5 algo tan
sencillo como capturar la entrada de datos procedente del usuario en un
programa escrito en Java no era una tarea fácil. Por suerte a partir de esa
versión contamos con una nueva clase, llamada Scanner, que simplificó y
mucho la tarea de obtener información introducida por el usuario para ser
procesada por nuestro programa. Y aunque ha llovido ya mucho desde
entonces, la última versión estable de Java es la 15.0.1 presentada en octubre
del pasado año, la clase Scanner ha mantenido su vigencia.
Dentro del paquete [Link], Scanner es una clase que nos permite obtener
la entrada de datos primitivos. Esto quiere decir que podemos capturar
datos del tipo int, double, string y etc. Esta clase nos permite de una manera
fácil componer nuestro programa para que entienda los datos que introduce
un usuario, por ejemplo en un formulario, y aunque no es “muy eficiente” si
necesitamos un método de entrada para escenarios donde el tiempo sea una
restricción, en los escenarios más generales resulta perfecto.

Cómo importar la clase Scanner en Java


En este artículo vamos a ver un sencillo ejemplo de cómo usar la clase
Scanner pero antes debemos importarla. Para declarar esto debemos añadir
la siguiente línea al comienzo de nuestro programa:

import [Link];

Tenemos que tener en cuenta que la clase Scanner debe ser declarada tal cual
con la primera letra en mayúscula. Podemos pensar que import [Link].*;
también resuelve esto, pero lo que hacemos con el primer método es solo
cargar la clase Scanner y no todas las demás disponibles. Recuerda, la
memoria lo es todo. ;)

Declarar y crear un objeto Scanner en Java


El siguiente paso para poder utilizar la clase Scanner es crear la variable
Scanner como una variable de clase y crear el objeto Scanner como se
muestra el la siguiente línea:
static Scanner sc = new Scanner([Link]);

De este modo para crear un objeto Scanner, usaremos la nueva palabra clave
seguida de una llamada al constructor de la clase Scanner. Lo que tenemos
que tener en cuenta es que necesitamos introducir un parámetro que indique
de dónde procederán la fuente de datos. En nuestro ejemplo
usaré [Link] para especificar la entrada de consola de teclado estándar
aunque podemos pasar un objeto de clase File si queremos leer la entrada de
un archivo. De este modo podemos manejar la clase al usar el objeto sc para
manejar y almacenar los datos introducidos por el usuario.

Método Explicación
boolean Lee valores lógicos boléanos introducidos por el
nextBoolean() usuario.
byte nextByte() Lee valores byte introducidos por el usuario.
double
Lee valores double introducidos por el usuario.
nextDouble()
float nextFloat() Lee valores float introducidos por el usuario.
int nextInt() Lee valores int introducidos por el usuario.
String nextLine() Lee valores String introducidos por el usuario.
long nextLong() Lee valores long introducidos por el usuario.
short nextShort() Lee valores short introducidos por el usuario.

Ejemplo:

// Programa Java para leer datos de varios tipos usando la clase Scanner
import [Link];
public class ScannerDemo
{
public static void main(String[] args)
{
// Declarar el objeto e inicializar con
// el objeto de entrada estándar predefinido
Scanner sc = new Scanner([Link]);
// entrada de una cadena
String name = [Link]();
// entrada de un carácter
char gender = [Link]().charAt(0);
// Entrada de datos numéricos
// byte, short y float
int age = [Link]();
long mobileNo = [Link]();
double average = [Link]();
// Imprima los valores para verificar si la entrada
// fue obtenida correctamente.
[Link]('Nombre: '+name);
[Link]('Género: '+gender);
[Link]('Edad: '+age);
[Link]('Teléfono: '+mobileNo);
[Link]('Promedio: '+average);
}
}

Entrada
: Salida:
Alex Nombre: Alex
masculi Género: m
no Edad: 23
23 Teléfono:
9257845 92578458
8 Promedio: 20.0
20

En este ejemplo vemos como los datos introducidos tienen su salida


correspondiente. Cada uno de los métodos termina con un paréntesis vacío.
Esto viene a significar que estos métodos no requieren parámetros, de ser así
se enumeran entre estos paréntesis.
Así el método nextInt devuelve un valor int. Pero ¿qué ocurre si introducimos
un tipo de datos no esperado? Pues que obtendremos un error, como por
ejemplo:
Enter an integer: three Exception in thread “main”
[Link]

at [Link]([Link])

at [Link]([Link])

at [Link]([Link])

at [Link]([Link])

at [Link]([Link])

Aquí InputMismatchException es claro y no requiere mayor explicación. No


hemos hecho las cosas bien y nuestro programa necesita ser depurado. En
este tipo de situaciones debemos verificar si el valor que leemos corresponde
al tipo de datos esperado por la clase Scanner. Para eso nos ayudaremos de la
función .hasNextXYZ() en donde XYZ es el tipo de datos que nos interesa. Esta
función devolverá verdadero (true) o falso (false) según corresponda.

Método Explicación
Devuelve true si el siguiente valor es introducido es un
hasNextBoolean()
booleano.
Devuelve true si el siguiente valor es introducido es un
hasNextByte()
valor byte.
Devuelve true si el siguiente valor es introducido es un
hasNextDouble()
valor double.
Devuelve true si el siguiente valor es introducido es un
hasNextFloat()
valor float.
Devuelve true si el siguiente valor es introducido es un
hasNextInt()
valor int.
Devuelve true si el siguiente valor es introducido es un
hasNextLong()
valor long.
boolean Returns true if the next value entered by the user is a
hasNextShort() valid short value.

Dicho esto, echemos un vistazo al siguiente de código de ejemplo para leer


algunos números de la consola e imprimir su resultado:

Ejemplo:

// Programa Java para leer algunos valores usando la clase Scanner


// e imprimir su media
import [Link];
public class ScannerDemo2
{
public static void main(String[] args)
{
// Declarar un objeto e inicializar con
// el objeto de entrada estándar predefinido
Scanner sc = new Scanner([Link]);
// Inicializar la suma y el recuento
// de los elementos de entrada
int sum = 0, count = 0;
// Compruebe si un valor int está disponible
while ([Link]())
{
// Lee un valor int
int num = [Link]();
sum += num;
count++;
}
int mean = sum / count;
[Link]("La media es: " + mean);
}
}

Entrad Salida:
a:
1
2
La media es:
3
3
4
5
6.0

También podría gustarte