Entrada de datos estándar en Java

La entrada de datos estándar viene a ser de donde los programas esperan obtener datos externos por defecto. Vamos a ver cómo manejarla en Java con Scanner.

También es la primera vez que te hago consciente del concepto de importar funcionalidades en Java. Como verás con la práctica, lo básico que nos ofrece Java no suele ser suficiente para programar las cosas que necesitamos, por eso necesitamos importar paquetes o clases que nos permitan reutilizar código que ya está escrito, y no tener que programarlo todo nosotros.

Puedes copiar este código y pegarlo en un archivo que se llame l_EntradaDeDatos.java dentro del paquete A_Inicio para comprobar su funcionamiento.

/* Aprendiendo a programar en DAM con elProfesorEmilio */
package A_Inicio;

// A veces necesitamos importar funcionalidades externas que el 
// lenguaje Java en su versión más básica no ofrece.
import java.util.Scanner;
// Biblioteca/Paquete que es necesario importar para que funcione
// la entrada de datos

/**
 * @author elProfesorEmilio
 * Vamos a ver cómo obtener datos desde teclado
 */
public class l_EntradaDeDatos {

    public static void main(String[] args) {
        // Definimos una variable de tipo Scanner que servirá para leer
        // y la inicializamos para que sea capaz de leer del teclado
        Scanner leer;
        leer = new Scanner(System.in);
        
        int numero; // Declaro una variable entera
        System.out.println("Introduzca su edad por favor: ");
        // Leer un número entero del teclado
        numero = leer.nextInt();
        
        // Scanner funciona mediante un buffer --> espacio de memoria dedicado
        System.out.println("Usted tiene " + numero + " años");
        System.out.println("Indice su fecha de nacimiento: ");
        // Siempre que se use nextInt antes de nextLine hay que limpiar el buffer
        // por que si no al leer con nextLine cogerá lo que sobró de la última 
        // línea que pasamos por teclado
        leer.nextLine();
        // Leer una cadena del teclado
        String s = leer.nextLine(); 
        // Después de un nextLine no es necesario limpiar
        System.out.println("Usted nació el " + s);
        
        /*
            Más posibilidades de lectura
            nextInt --> siguiente entero en el buffer
            next --> siguiente String en el buffer hasta leer espacio o enter
            nextLine --> lo que encuentre en el buffer hasta un salto de línea
            nextFloat --> 
            nextDouble
            nextByte
            nextBoolean
            nextLong
            nextShort
            nextBigDecimal
        */
        
        
        // next lee por tokens, y un token es lo que hay hasta un carácter
        // delimitador --> espacio o ENTER
        // Prueba a escribir una frase con 4 palabras
        String siguiente = leer.next();
        System.out.println(siguiente);
        siguiente = leer.next();
        System.out.println(siguiente);
        siguiente = leer.next();
        System.out.println(siguiente);
        siguiente = leer.next();
        System.out.println(siguiente);
    }
}