Programming

T02-005- Leer del teclado

Enunciado

Existen varias formas de leer información proveniente del usuario. De entre todas ellas, nosotros usaremos la clase Scanner de Java para leer de teclado. 

  • Dicha clase se encuentra en el paquete java.util.Scanner de las librerías de Java, el cual tendré que importar a mi programa para poder utilizarlo. Para ello, antes de la declaración de la clase, pondremos el código siguiente:

import java.util.Scanner;

  • Para poder leer del teclado usando la clase Scanner, tenemos que crear un objeto de tipo Scanner vinculado a la entrada estándar del sistema. La siguiente línea declara, e inicializa o instancia (new) ese objeto Scanner asociado a la entrada estándar(System.in) del sistema.

Scanner sc = new Scanner(System.in);

Nota: Esta sentencia se va a repetir en innumerables ocasiones en nuestro código y, a fuerza de copiarla y pegarla, la aprenderemos de memoria, aunque su comprensión la dejaremos para más adelante.

En función del tipo de dato que vayamos a leer, utilizaremos alguno de los métodos que nos brinda la clase Scanner, a través del objeto sc que acabamos de instanciar:

  • Para leer una cadena de caracteres de teclado usaremos el método nextLine() de la clase Scanner. Este método devuelve una cadena que debe ser almacenado en una variable de tipo String:

String cadena = sc.nextLine();

  • Para leer un valor entero de teclado, usaremos el método nextInt() de la clase Scanner. Este método devuelve un entero, que debe ser almacenado en una variable de tipo int:

 int entero = sc.nextInt();

  • Para leer un valor real de teclado, usaremos el método nextFloat() de la clase Scanner. Este método devuelve un float, que debe ser almacenado en una variable de tipo float:

 float real = sc.nextFloat();

Ejemplo:

En el ejemplo que hemos realizado anteriormente, en el que se imprimía en pantalla "Mi nota en PROGRAMACION es: 10", el valor de esa nota se incluía dentro del código. Si quisiéramos que fuera el usuario que está ejecutando la aplicación el que introdujera el valor que le corresponde a la nota, lo haríamos con el siguiente código:

package lecturateclado;

import java.util.Scanner;

public class LecturaTeclado {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int miCalificacion;
        
        System.out.println("Dime la nota que me corresponde:");
        miCalificacion = sc.nextInt();

        System.out.println("Mi nota en PROGRAMACION es: " + miCalificacion);
    }

}

 Ejercicio:

Prueba a ejecutar el código anterior, permitiendo que, en lugar de una nota con valor entero, se pueda introducir una calificación con decimales.

Nota: Ten en cuenta que los decimales que introduce el usuario deben ir separados por la coma decimal y no por el .

Solución


											
package lecturateclado; import java.util.Scanner; public class LecturaTeclado { public static void main(String[] args) { Scanner sc = new Scanner(System.in); float miCalificacion; System.out.println("Dime la nota que me corresponde:"); miCalificacion = sc.nextFloat(); System.out.println("Mi nota en PROGRAMACION es: " + miCalificacion); } }

Input

8,7
4,2

Output

Dime la nota que me corresponde: Mi nota en PROGRAMACION es: 8.7
Dime la nota que me corresponde: Mi nota en PROGRAMACION es: 4.2