El uso de la clase Scanner es una de las mejores maneras de ingresar datos por teclado en Java.
Scanner es una clase en el paquete java.util utilizada para obtener la entrada de los tipos primitivos como int, double etc. y también String. Es la forma más fácil de leer datos en un programa Java, aunque no es muy eficiente si se quiere un método de entrada para escenarios donde el tiempo es una restricción, como en la programación competitiva.
En resumen:
- Para crear un objeto de clase Scanner, normalmente pasamos el objeto predefinido System.in, que representa el flujo de entrada estándar. Podemos pasar un objeto de clase File si queremos leer la entrada de un archivo.
- Para leer valores numéricos de un determinado tipo de datos XYZ, la función que se utilizará es nextXYZ(). Por ejemplo, para leer un valor de tipo short, podemos usar nextShort().
- Para leer cadenas (strings), usamos nextLine().
- Para leer un solo carácter, se usa next().charAt(0). La función next()devuelve el siguiente token/palabra en la entrada como cadena y la función charAt (0) devuelve el primer carácter de esa cadena.
Ejemplos con la clase Scanner
Echemos un vistazo al fragmento de código para leer datos de varios tipos de datos.
Ejemplo:
// Programa Java para leer datos de varios tipos usando la clase Scanner import java.util.Scanner; 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(System.in); // entrada de una cadena String name = sc.nextLine(); // entrada de un carácter char gender = sc.next().charAt(0); // Entrada de datos numéricos // byte, short y float int age = sc.nextInt(); long mobileNo = sc.nextLong(); double average = sc.nextDouble(); // Imprima los valores para verificar si la entrada // fue obtenida correctamente. System.out.println("Nombre: "+name); System.out.println("Género: "+gender); System.out.println("Edad: "+age); System.out.println("Teléfono: "+mobileNo); System.out.println("Promedio: "+average); } }
Entrada:
Alex masculino 23 92578458 20
Salida:
Nombre: Alex Género: m Edad: 23 Teléfono: 92578458 Promedio: 20.0
Ejemplo con hasNextXYZ()
A veces, debemos verificar si el siguiente valor que leemos es de cierto tipo o si la entrada ha finalizado (se encontró el marcador EOF).
Luego, verificamos si la entrada del Scanner es del tipo que queremos con la ayuda de las funciones hasNextXYZ() donde XYZ es del tipo que nos interesa. La función devuelve true (verdadero) si el scanner tiene un token de ese tipo, de lo contrario es false (falso). Por ejemplo, en el siguiente código, hemos utilizado hasNextInt(). Para verificar una cadena, usamos hasNextLine(). De manera similar, para verificar si hay un solo carácter, usamos hasNext().CharAt(0).
Echemos un vistazo al fragmento de código para leer algunos números de la consola e imprimir su media.
Ejemplo:
// Programa Java para leer algunos valores usando la clase Scanner // e imprimir su media import java.util.Scanner; 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(System.in); // Inicializar la suma y el recuento // de los elementos de entrada int sum = 0, count = 0; // Compruebe si un valor int está disponible while (sc.hasNextInt()) { // Lee un valor int int num = sc.nextInt(); sum += num; count++; } int mean = sum / count; System.out.println("La media es: " + mean); } }
Entrada:
1 2 3 4 5 6.0
Salida:
La media es: 3
17 comentarios
Llego a este link desde: Casting con ejemplos – Conversión de tipos de datos en Java, en Contenido de Java Básico desde Cero.
No hay nada de la conversión de tipos de datos y si de la Clase Scanner. Donde en javadesdecero.es puedo leer conversión de tipos de datos? Por cierto, excelente trabajo Alex y gracias por compartir.
buenas noches amigo, intento compilar este código pero no obtengo resultado, la terminal se queda pensando sin darme respuesta me puedes ayudar con este problema… sorry soy nuevo en java y ando probando esta clase.
Amigo ocupo ayuda con mi tarea ::((( estoy en colapso
Gracias por la información de este documento, me ha sido de gran ayuda.
Felicidades muy bueno.
De verdad me esta ayudando Gracias papuh 😀
¡Qué gran post!
Fue de muchísima ayuda, concisa y directa.
¡Excelente!
Genial Eduardo 🙂
Un saludo y muchos éxitos
Pues etso nos ayuda para poder aprender más sobre lo que queremos y ser requerido
Me sirvio muchisimo, muchas gracias Alex
Genial Mario. ¡Muchos éxitos! 🙂
Llego a este link desde: Casting con ejemplos – Conversión de tipos de datos en Java, en Contenido de Java Básico desde Cero.
No hay nada de la conversión de tipos de datos y si de la Clase Scanner. Donde en javadesdecero.es puedo leer conversión de tipos de datos? Por cierto, excelente trabajo Alex y gracias por compartir.
Hola Luca, aquí está el post de la conversión de tipos de datos con ejemplos. Déjame saber si eso es lo que buscas.
[…] En caso de que no recuerde cómo funcionan los métodos de scanner, eche un vistazo a este artículo, «Scanner en Java«. […]
Muy buenas tengo una duda tengo un caso similar, donde el problema me pide que el programa lea un numero de tres cifras y muestre por separado las cifras del número.
Programa que lea un número de 3 cifras y muestre por pantalla las cifras del número
EJEMPLO
N = 123
Imprimir en Pantalla
1
2
3
Por fa si me podrian ayudar con eso o dar una pista de lo que se usa
import java.util.Scanner;
// tresDigitos.java
class tresDigitos {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N;
System.out.print(“Ingresa un número de tres dígitos: “);
N = input.nextInt();
System.out.println(“Primer dígito: ” + (N/100));
System.out.println(“Segundo dígito dígito: ” + (N/10%10));
System.out.println(“Tercer dígito: ” + (N%10));
input.close();
}
}
/*Ejemplo salida:
Ingresa un número de tres dígitos: 466
Primer dígito: 4
Segundo dígito dígito: 6
Tercer dígito: 6
*/
import java.util.Scanner;
public class ejemplo {
public static void main(String args[]){
System.out.println(“Introduce el primer numero “);
Scanner consola = new Scanner(System.in);
var numero1 = consola.nextLine();
System.out.println(“numero1 = ” + numero1);
System.out.println(“Introduce el segundo numero”);
var numero2 = consola.nextLine();
System.out.println(“numero2 = ” + numero2);
System.out.println(“Introduce el tercer numero”);
var numero3 = consola.nextLine();
System.out.println(“numero3 = ” + numero3);
System.out.println(“N = ” + numero1 + numero2 + numero3 );
}
}
Bherny tu programa no hace lo que indica el usuario Mauricio, mejor no poner ejemplos y que ellos mismos los piensen.