Java

Tutorial Java: La clase Scanner

Java scanner: entrada de datos. Domina el uso de la clase Scanner en Java para la entrada de datos con ejemplos detallados.

La clase Scanner es una de las clases más utilizadas en Java Standard Edition (Java SE) debido a su facilidad de uso y a su utilidad para la entrada de datos. Esta se encuentra en el paquete java.util y proporciona métodos para interpretar y convertir tipos de datos primitivos y strings, lo que la hace muy útil para leer desde la entrada estándar (como el teclado), desde un archivo, o desde cualquier otra fuente que pueda proporcionar una secuencia de caracteres.

Un aspecto fundamental de la programación es la capacidad de interactuar con el usuario. Para lograr esto, uno necesita una forma de recibir la entrada del usuario. En Java, una de las formas más comunes de lograr esto es a través de la clase Scanner.

Creación de un objeto Scanner

Para poder utilizar la clase Scanner, primero se debe crear un objeto de esta clase. Por ejemplo, para crear un objeto Scanner que lee desde la entrada estándar (el teclado), se puede utilizar el siguiente código:

import java.util.Scanner;  // Importar la clase Scanner

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  // Crear un objeto Scanner
    }
}

Aquí, System.in es la entrada estándar que, por lo general, representa el teclado.

Uso de la clase Scanner

Una vez que se ha creado un objeto Scanner, se pueden utilizar sus métodos para leer la entrada del usuario. Por ejemplo, si se quiere leer un número entero del usuario, se puede utilizar el método nextInt():

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Introduzca un número entero: ");
        int numero = scanner.nextInt();  // Leer un número entero

        System.out.println("El número introducido es " + numero);
    }
}

Si se ejecuta este código, se solicitará al usuario que introduzca un número entero. Una vez que el usuario introduce el número y presiona Enter, el número se almacena en la variable numero, y luego se imprime en la consola.

Del mismo modo, existen métodos para leer otros tipos de datos. Algunos de los métodos más comúnmente utilizados de la clase Scanner son:

  • nextByte(): Lee un byte.
  • nextShort(): Lee un short.
  • nextInt(): Lee un int.
  • nextLong(): Lee un long.
  • nextFloat(): Lee un float.
  • nextDouble(): Lee un double.
  • nextBoolean(): Lee un boolean.
  • next(): Lee una palabra (delimitada por espacios en blanco o fin de línea).
  • nextLine(): Lee una línea completa de texto.

Es importante notar que cada uno de estos métodos puede lanzar una excepción InputMismatchException si la entrada del usuario no coincide con el tipo de datos esperado.

Clases y objetos

En la programación orientada a objetos (OOP), los objetos son instancias de clases. Una clase define las propiedades (campos) y los comportamientos (métodos) que tendrán los objetos de esa clase. En el caso de la clase Scanner, los objetos de esta clase tienen la capacidad de leer la entrada del usuario.

En el ejemplo anterior, scanner es un objeto de la clase Scanner. Cuando se crea este objeto con la instrucción new Scanner(System.in), se está invocando al constructor de la clase Scanner, que toma como parámetro una instancia de la clase InputStream. En este caso, System.in es una instancia de InputStream que representa la entrada estándar.

Encapsulación

La encapsulación es uno de los principios fundamentales de la programación orientada a objetos. Este principio establece que los detalles de implementación de una clase deben estar ocultos, y que sólo se deben exponer los métodos y propiedades necesarios para interactuar con la clase.

En el caso de la clase Scanner, los detalles de cómo se lee y se interpreta la entrada del usuario están ocultos. Los usuarios de la clase sólo necesitan conocer los métodos que proporciona la clase para leer la entrada, como nextInt(), nextLine(), etc.

Excepciones

Las excepciones son una forma de manejar situaciones de error o excepcionales en un programa. En Java, las excepciones son representadas por objetos de una clase que hereda de la clase Throwable.

En el caso de la clase Scanner, los métodos que leen la entrada del usuario pueden lanzar una excepción InputMismatchException si la entrada del usuario no coincide con el tipo de datos que se intenta leer. Por ejemplo, si se utiliza el método nextInt() y el usuario introduce un valor que no es un número entero, se lanzará una InputMismatchException.

Para manejar estas situaciones, se puede utilizar una estructura de control try-catch:

import java.util.Scanner;
import java.util.InputMismatchException;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Introduzca un número entero: ");
            int numero = scanner.nextInt();

            System.out.println("El número introducido es " + numero);
        } catch (InputMismatchException e) {
            System.out.println("No ha introducido un número entero válido.");
        }
    }
}

Métodos de la clase String

Además de leer la entrada del usuario, la clase Scanner también puede trabajar en conjunción con la clase String para interpretar y manipular la entrada del usuario.

Por ejemplo, si se quiere leer una línea completa de texto y luego dividirla en palabras, se puede utilizar el método nextLine() de la clase Scanner para leer la línea, y luego el método split() de la clase String para dividir la línea en palabras:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Introduzca una línea de texto: ");
        String linea = scanner.nextLine();

        String[] palabras = linea.split(" ");  // Dividir la línea en palabras

        System.out.println("Las palabras en la línea son:");
        for (String palabra : palabras) {
            System.out.println(palabra);
        }
    }
}

Este código solicita al usuario que introduzca una línea de texto. Luego divide esa línea en palabras y las imprime una por una.

Conclusión

La clase Scanner es una herramienta esencial en la programación en Java SE, ya que proporciona una forma fácil de leer y procesar la entrada del usuario. Con sus métodos para leer diferentes tipos de datos y trabajar con strings, es un componente versátil y útil en muchos programas de Java.

Certifícate en Java con CertiDevs PLUS

Ejercicios de esta lección La clase Scanner

Evalúa tus conocimientos de esta lección La clase Scanner con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Gestión de errores y excepciones

Código

Datos primitivos

Puzzle

Streams: min max

Puzzle

Clases abstractas

Test

Polimorfismo de tiempo de ejecución

Puzzle

Streams: map()

Puzzle

Interfaz funcional Predicate

Puzzle

Llamada y sobrecarga de funciones

Puzzle

ArrayList

Test

Representación de Fecha

Puzzle

Operadores lógicos

Test

OOP en Java

Proyecto

Estructuras de iteración

Puzzle

Objetos

Puzzle

Streams: sorted()

Test

Polimorfismo de tiempo de compilación

Test

Streams: filter()

Puzzle

Métodos referenciados

Test

Métodos de la clase String

Código

Streams: flatMap()

Test

Operadores aritméticos

Puzzle

Streams: match

Test

Interfaz funcional Consumer

Test

Operaciones de Streams

Puzzle

Clases y objetos

Código

API java.nio 2

Puzzle

CRUD en Java de modelo Customer sobre un ArrayList

Proyecto

Interfaces

Código

Streams: distinct()

Puzzle

Representación de Hora

Test

Tipos de variables

Puzzle

Herencia básica

Test

Datos de referencia

Test

Creación de Streams

Test

Interfaz funcional Function

Test

Métodos básicos de la clase String

Test

HashMap

Puzzle

Funciones lambda

Test

Uso de API Optional

Puzzle

Streams: count()

Test

Streams: forEach()

Test

Métodos avanzados de la clase String

Puzzle

Excepciones

Puzzle

Herencia avanzada

Puzzle

Estructuras de selección

Test

Uso de interfaces

Test

Sobrecarga de métodos

Test

API Optional

Test

Tipos de datos

Código

Streams: reduce()

Test

HashSet

Test

Uso de variables

Test

Objeto Scanner

Test

Interfaces funcionales

Puzzle

Configuración de entorno

Test

Clases

Test

Uso de Scanner

Puzzle

Interfaz funcional Supplier

Puzzle

CRUD en Java de modelo Customer sobre un HashMap

Proyecto

Streams: collect()

Puzzle

Instalación

Test

Funciones

Código

Encapsulación

Test

Estructuras de control

Código

Herencia de clases

Código

Funciones y encapsulamiento

Test

Todas las lecciones de Java

Accede a todas las lecciones de Java y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Javascript

JavaScript

Sintaxis

Tipos De Datos

JavaScript

Sintaxis

Variables

JavaScript

Sintaxis

Operadores

JavaScript

Sintaxis

Estructuras De Control

JavaScript

Sintaxis

Funciones

JavaScript

Sintaxis

Funciones Cierre (Closure)

JavaScript

Sintaxis

Funciones Flecha

JavaScript

Programación Funcional

Filtrado Con Filter() Y Find()

JavaScript

Programación Funcional

Transformación Con Map()

JavaScript

Programación Funcional

Reducción Con Reduce()

JavaScript

Programación Funcional

Clases Y Objetos

JavaScript

Programación Orientada A Objetos

Excepciones

JavaScript

Programación Orientada A Objetos

Encapsulación

JavaScript

Programación Orientada A Objetos

Herencia

JavaScript

Programación Orientada A Objetos

Polimorfismo

JavaScript

Programación Orientada A Objetos

Array

JavaScript

Estructuras De Datos

Conjuntos Con Set

JavaScript

Estructuras De Datos

Mapas Con Map

JavaScript

Estructuras De Datos

Manipulación Dom

JavaScript

Dom

Selección De Elementos Dom

JavaScript

Dom

Modificación De Elementos Dom

JavaScript

Dom

Eventos Del Dom

JavaScript

Dom

Callbacks

JavaScript

Programación Asíncrona

Promises

JavaScript

Programación Asíncrona

Async / Await

JavaScript

Programación Asíncrona

Instalación De Java

Introducción Y Entorno

Configuración De Entorno Java

Introducción Y Entorno

Tipos De Datos

Sintaxis

Variables

Sintaxis

Operadores

Sintaxis

Estructuras De Control

Sintaxis

Funciones

Sintaxis

Excepciones

Programación Orientada A Objetos

Clases Y Objetos

Programación Orientada A Objetos

Encapsulación

Programación Orientada A Objetos

Herencia

Programación Orientada A Objetos

Clases Abstractas

Programación Orientada A Objetos

Interfaces

Programación Orientada A Objetos

Sobrecarga De Métodos

Programación Orientada A Objetos

Polimorfismo

Programación Orientada A Objetos

La Clase Scanner

Programación Orientada A Objetos

Métodos De La Clase String

Programación Orientada A Objetos

Funciones Lambda

Programación Funcional

Interfaz Funcional Consumer

Programación Funcional

Interfaz Funcional Predicate

Programación Funcional

Interfaz Funcional Function

Programación Funcional

Interfaz Funcional Supplier

Programación Funcional

Métodos Referenciados

Programación Funcional

Creación De Streams

Programación Funcional

Operaciones Intermedias Con Streams: Map()

Programación Funcional

Operaciones Intermedias Con Streams: Filter()

Programación Funcional

Operaciones Intermedias Con Streams: Flatmap()

Programación Funcional

Operaciones Intermedias Con Streams: Sorted()

Programación Funcional

Operaciones Intermedias Con Streams: Distinct()

Programación Funcional

Operaciones Finales Con Streams: Reduce()

Programación Funcional

Operaciones Finales Con Streams: Collect()

Programación Funcional

Operaciones Finales Con Streams: Foreach()

Programación Funcional

Operaciones Finales Con Streams: Count()

Programación Funcional

Operaciones Finales Con Streams: Min Max

Programación Funcional

Operaciones Finales Con Streams: Match

Programación Funcional

Api Optional

Programación Funcional

Listas

Framework Collections

Conjuntos

Framework Collections

Mapas

Framework Collections

Api Java.nio 2

Entrada Y Salida (Io)

Api Java.time

Api Java.time

Certificados de superación de Java

Supera todos los ejercicios de programación del curso de Java y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender qué es la clase Scanner y cómo se utiliza en Java.
  2. Aprender a crear objetos de la clase Scanner y utilizar sus métodos para leer la entrada del usuario.
  3. Conocer los diferentes métodos de la clase Scanner y qué tipo de entrada leen.
  4. Entender cómo la clase Scanner se relaciona con los conceptos de la programación orientada a objetos, como clases, objetos y encapsulación.
  5. Manejar excepciones que pueden surgir al usar la clase Scanner.
  6. Aprender a trabajar con la clase Scanner en conjunto con la clase String para procesar la entrada del usuario.