Leer Entradas desde el Teclado en Java
ÍNDICE
- Objetivos Generales
- Introducción
- Leer datos ingresados desde el teclado en java
- Clase Scanner (java.util.scanner)
- Clase (java.io)
- Enlaces para Videos
- Conclusión
- Introducción
- Leer datos ingresados desde el teclado en java
- Clase Scanner (java.util.scanner)
- Clase (java.io)
- Enlaces para Videos
- Conclusión
Objetivos Generales
- Comprender como se leen entradas desde el teclado en java.
- Conocer algunas de las clases que java puede utilizar.
- Aprender a emplear programas que utilicen clases que permitan leer entradas desde el teclado.
INTRODUCCIÓN
Cuando decimos Entrada nos referimos a ingresar datos, es posible leer los datos que se introducen por medio del teclado en un programa realizado en el lenguaje de programación Java, como Java es un programa orientado a objetos funcionará por medio de clases.
Así que antes de comenzar con el tutorial para aprender a leer la entrada desde el teclado en Java en importante saber que es una clase; diremos que una clase es un molde del que luego se pueden crear múltiples objetos con características similares y que posee una plantilla (molde), que define atributos (variables) y métodos (funciones).
La estructura de una clase es:
class [nombre de la clase] {
[atributos o variables de la clase]
[métodos o funciones de la clase]
[main]
{
Ya sabido esto podemos pasar al tema principal.
¿Cuántos años tienes? 22
Pues aparentas 19
Ahora analicemos el ejemplo:
Así que antes de comenzar con el tutorial para aprender a leer la entrada desde el teclado en Java en importante saber que es una clase; diremos que una clase es un molde del que luego se pueden crear múltiples objetos con características similares y que posee una plantilla (molde), que define atributos (variables) y métodos (funciones).
La estructura de una clase es:
class [nombre de la clase] {
[atributos o variables de la clase]
[métodos o funciones de la clase]
[main]
{
Ya sabido esto podemos pasar al tema principal.
Leer la Entrada desde el Teclado en Java
Clase Scanner (java.util.scanner)
Una de las maneras más sencillas es por medio de la clase Scanner (java.util.scanner), como dato extra cabe mencionar que disponemos de la clase Scanner desde Java 1.5
Programa:
// para leer de teclado necesitamos la clase Scanner
import java.util.Scanner;
public class Ejemplo {
public static void main(String[] args) {
// sc se usará para leer los datos
Scanner sc = new Scanner(System.in);
// preguntar la edad
System.out.print("¿Cuántos años tienes? ");
// leer un entero
int edad = sc.nextInt();
System.out.println("...pues aparentas "+(edad-3));
} // main
}
La salida de datos de este programa quedaría así:¿Cuántos años tienes? 22
Pues aparentas 19
Ahora analicemos el ejemplo:
import java.util.Scanner; Para leer desde teclado se debe utilizar un objeto de la clase Scanner. Esta clase no es de las incluidas de forma automática y por eso debe incluirse mediante la palabra clave import. Si la clase está definida en otro paquete se escribe el nombre "cualificado", precedido por el nombre del paquete. En este caso la clase Scanner es parte del paquete útil que es a su vez parte de la clase java. Si se desean incluir varias clases se incluirán varias sentencias import:
import java.util.Scanner; import java.util.Vector; Si se quieren incluir varias (o todas) clases del mismo paquete se puede usar el simbolo *:import java.util.*; // importa Scanner, Vector y muchas másPara ver qué clases contiene cada paquete conviene consultar la ayuda de Java.
Scanner sc = new Scanner(System.in); Esta instrucción declara y comienza un objeto sc de tipo Scanner. El parámetro System.in indica de dónde se leerá, en este caso de la entrada estándar.
int edad = sc.nextInt(); La llamada al método nextInt(); devuelve el siguiente entero que se puede leer del objeto de tipo Scanner. Además de enteros se pueden leer valores de otros tipos. Para leer una línea completa se usará el método nextLine(); que devuelve un valor de tipo String:
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("¿Cómo te llamas? ");
String nombre = sc.nextLine(); // leer una cadena de caracteres
System.out.println("Es un placer conocerte "+nombre);
} // main
}
Si deseas ver otro ejemplo has click AQUÍ
Si se te es complicado ver la imagen puedes utilizar el zoom in.
Clase Java.io
Esta clase esta diseñada para interrogar al usuario sobre determinado archivo, leer su contenido y finalmente indica al usuario el número de renglones que contiene, consta únicamente de su método principal (main) y un bloque try/catch/finally.
Programa:
import
java.io.*;
public
class Calculo {
public static void main(String[] args)
throws IOException {
String s;
int lineas = 1;
try {
System.out.print("Que archivo
desea analizar ? ");
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
String archivo = stdin.readLine();
BufferedReader sarchivo = new
BufferedReader(
new
FileReader(archivo));
while (( s = sarchivo.readLine()) != null)
lineas++;
System.out.println("El archivo "
+ archivo +
" contiene " + lineas + " renglones de Codigo.");
} catch
(IOException exc) {
System.err.println(exc);
System.out.println("Asegurese de haber
proporcionado " +
" la extension del
archivo (\".java\")");
}
finally {
System.out.println("");
System.out.println("Es la mejor manera
de aprender Streams, practicando!");
}
}
}
Ahora analicemos el ejemplo:
Ahora analicemos el ejemplo:
De inicio son definidos dos campos para utilizarse dentro del método principal (
main).Posteriormente se define el bloque try/catch/finally con las siguientes características:
try
Se despliega una pregunta al usuario para que proporcione el
nombre del archivo a leer.Es definida una Clase del tipo
BufferedReader la cual permite archivar datos temporales en memoria
("Buffer")
El argumento que recibe al ser generada la Clase anterior es otra
Clase llamada
InputStreamReader, la cual permite leer
datos de un "Stream", en este caso siendo System.in que representa el shell
de ejecución.
Se extrae el nombre del archivo a través del método
readLine() y es asignado a una
referencia deString.
Es generada una nueva instancia de la Clase
BufferedReader a la cual será asignada el archivo en cuestión.
El argumento que recibe al ser generada la Clase anterior es otra
Clase llamada
FileReader, la cual contiene los
mecanismos necesarios para leer un Archivo, y en este caso recibiendo el nombre
del archivo.
Se entra en un ciclo while el cual permanecerá activo hasta que
el resultado del método
readLine()sobre la referencia
definida anteriormente equivalga a null. NOTA: El método readLine retorna un resultado null ya que el archivo no
contenga lineas.
Dentro de cada iteración de ciclo se incrementa la variable
(primitivo)
lineas la cual representa el número de lineas en el archivo.
Finalmente se envía a pantalla el resultado obtenido del ciclo.
catch
Dentro de está sección del Bloque se intenta atrapar un error
("Exception") del tipo
IOException, este tipo de error es
generado al no poderse iniciar lectura/escritura en un programa.
En este programa el error sería generado al intentarse leer un
archivo inexistente proporcionado por el usuario, en caso de generarse este
error, se envía a pantalla una sugerencia así como el error completo.
finally
Esta sección del Bloque describe instrucciones que siempre deben
ser ejecutadas independientemente de ser generado un error
("Exception") o no.Se imprime a pantalla un mensaje cada vez que sea
ejecutado el programa, ocurra o no ocurra un error ("Exception")
Si deseas ver otro ejemplo has click AQUÍ
Si se te es complicado ver la imagen puedes utilizar el zoom in.
Videos
Para comprender mejor la clase java.util.scanner visita el siguiente enlace:
Para comprender mejor la clase java.io visita los siguientes enlaces:
Conclusión
Entre las clases de java.io y java.util.scanner hay mucha semejanza, ya que ambos requieren la entrada de datos por el teclado. La diferencia más notoria estaría en sus funciones y el contenido de estas.
Una ventaja que es muy notoria a favor de java.util.scanner es que el código que escribamos será más breve que el que escribiremos en java.io, esto nos ahorrara mucho tiempo.
Excluyendo eso ambas clases son una buena opción para aquellas personas que empiezan en el mundo de la programación, ya que son muy sencillas de manejar, lo que permitirá al usuario tener una comprensión veloz sobre como leer entradas desde el teclado.
"Primero soluciona el problema. Luego escribe el código" Jhon Jhonson