Introducción de datos con Scanner en Java

Hola a todos, hoy os explicaré como podemos introducir datos con la clase Scanner en Java.

La clase Scanner nos permite que un usuario externo a nuestra aplicación inserte datos necesario para nuestro programa, por ejemplo, pedir al usuario un número para calcular alguna formula.

Hay varias formas de usar esta clase pero nos centraremos en la introducción de datos. En otros posts, nos centraremos en esas otras funciones.

La forma de crear un Scanner es la siguiente.

Scanner sn=new Scanner(System.in);

Ya teniendo el objeto creado, podemos usar los metodos que tiene. Recordar que tenemos que importar la clase poniendo este import al principio del fichero.

import java.util.Scanner;

Los que mas nos importa son los metodos next. Son los que devuelven el tipo de dato deseado. Por ejemplo:

import java.util.Scanner;

public class ejemploScanner {

    public static void main(String[] args) {

        Scanner sn=new Scanner(System.in);

        System.out.println("Escribe un numero entero: ");
        int num=sn.nextInt();
        System.out.println("El numero entero escrito ha sido "+num);

        System.out.println("Escribe un numero decimal: ");
        double numDouble=sn.nextDouble();
        System.out.println("El numero decimal escrito ha sido "+numDouble);

        System.out.println("Escribe una cadena: ");
        String cadena=sn.next();
        System.out.println("El numero decimal escrito ha sido "+cadena);

        System.out.println("Escribe un booleano: ");
        boolean booleano=sn.nextBoolean();
        System.out.println("El booleano escrito es "+booleano);

    }
}

Hay que tener en cuenta que sino se pone un dato correcto nos saltara una excepcion InputMismatchException.

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

public class ejemploScanner {

    public static void main(String[] args) {

        Scanner sn=new Scanner(System.in);

        try{
            System.out.println("Escribe un numero entero, si escribes otra cosa que no sea un numero saltara la excepcion: ");
            int numero=sn.nextInt();
            System.out.println("El numero decimal escrito ha sido "+numero);
        }catch(InputMismatchException e){
             System.out.println("Error, ha introducido un valor incorrecto");
        }
    }
}

También una cosa más, por defecto, si nosotros ponemos en cualquier dato un espacio (por ejemplo en una cadena un nombre compuesto), este considerará que el que va despues del espacio es el siguiente next que haya en el programa (si lo hay). La forma de solucionarlo es con nextLine(). Por ejemplo:

import java.util.Scanner;

public class ejemploScanner {

    public static void main(String[] args) {

        Scanner sn=new Scanner(System.in);

        System.out.println("Escribe una cadena con espacio: ");
        String cadena=sn.nextLine();
        System.out.println("El numero decimal escrito ha sido "+cadena);

    }
}

Espero que os sea de ayuda

Compartir

4 comentarios

  1. frank

    como seria si quisiera introducir datos por el teclado en un arraglo bidemensional en el que el tamaño ya esta definido?

  2. admin Post author

    Tendras que hacer un bucle anidado y dentro de este poner el .next

  3. faculoco

    System.out.println(«Escribe un numero decimal: «);
    double numDouble=sn.nextDouble();
    System.out.println(«El numero decimal escrito ha sido «+numDouble);

    En la linea 2, seria «double numDouble=sc.nextDouble();» sino me equivoco. Buen aporte igual

  4. Disco Duro de Roer Post author

    sc? porqué? El Scanner que se crea se llama sn. Pueden llamarse de forma distinta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *