domingo, 23 de octubre de 2011

■ Lectura de Datos con Scanner

Otra de las formas que Java proporciona para la lectura de datos por el teclado además del "BufferedReader", es mediante un objeto de la clase Scanner.

Este método es un poco más sencillo que el "BufferedReader", además, la conversión del dato leído al tipo de dato requerido es muy simple.

Scanner

Para utilizar el método Scanner debemos importar la siguiente librería:

import java.util.Scanner;

El objeto del tipo Scanner con el que leeremos los datos del teclado lo declaramos de la siguiente forma:
  • Scanner sc = new Scanner(System.in);
...donde "sc" es nuestro objeto.

La lectura se hace de la siguiente manera:
  • dato = sc.next();

En el ejemplo anterior funciona perfectamente para las cadenas de texto, se hace la lectura y se almacena en la variable "dato", para leer otro tipo de valor, como por ejemplo un número entero o decimal, tenemos que convertir el dato leído (que se toma como cadena) a dato númerico según se requiera, la lectura de otros tipos de datos se hace así:

• Byte
byte dato;
dato = sc.nextByte();

• Short
short dato;
dato = sc.nextShort();

• Int
int dato;
dato = sc.nextInt();

• Float
float dato;
dato = sc.nextFloat();

• Long
long dato;
dato = sc.nextLong();

• Double
double dato;
dato = sc.nextDouble();

• String
String dato;
dato = sc.next();     // Lee solo una palabra
dato = sc.nextLine(); // Lee una línea de texto completa

• En el caso del "char" es:
char dato;
dato = sc.next().charAt(0);

También se pueden "leer" valores boleanos, en este caso lo que se lee no es el booleano en si, sino la cadena "true" o "false" que es convertida a su valor boleano correspondiente.

• Boolean
boolean dato;
dato = sc.nextBoolean();

Otra forma de "leer" un booleano es leyendo en una variable String la cadena "true" o "false" y luego convertirla a boolean con el método de String ''equalsIgnoreCase("true")'', esto lo que hace es que si tecleamos la cadena "true" nos devolverá el valor boleano true y si tecleamos cualquier otras cosa devolverá false.
boolean dato;
String cadena = sc.next();
dato = cadena.equalsIgnoreCase("true");


Ejemplo: Leer nombre y edad y mostrarlos en pantalla

import java.util.Scanner;

public class LecturaTeclado2 {
     public static void main (String args[]) {
          Scanner sc = new Scanner(System.in);
          String nombre;
          int edad;

          System.out.print("Ingresa nombre: ");
          nombre = sc.next();
          System.out.print("Ingresa edad: ");
          edad = sc.nextInt();
          System.out.print("Nombre " + nombre + " edad " + edad);
     }
}

No hay comentarios:

Publicar un comentario