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
como seria si quisiera introducir datos por el teclado en un arraglo bidemensional en el que el tamaño ya esta definido?
Tendras que hacer un bucle anidado y dentro de este poner el .next
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
sc? porqué? El Scanner que se crea se llama sn. Pueden llamarse de forma distinta.