Lectura de datos desde teclado
En esta práctica se va a desarrollar una aplicación interactiva simple en Java, que solicita al usuario escribir datos de entrada en el teclado. La lectura de los datos se va a realizar desde la línea de monados y a través de una ventana de diálogo.
Software necesario
Se requiere tener instalado el software requerido (JDK y
NetBeans IDE) en el ordenador como se
describe aquí. También es necesario descargar la documentación Java:
- Fichero zip Java SE 6 Documentation
(download)
- Desplazar hacia abajo hasta ver Java
SE 6 Documentation. Descargar el fichero zip.
- Se puede almacenar el fichero zip en cualquier parte del sistema de directorios.
- No se requiere descomprimir el fichero.
- Se añadirá en NetBeans como se describe abajo.
Ejercicios
Ejercicio 0: Descarga de documentación JDK
Ejercicio 1: Lectura de datos desde el teclado usando la clase
BufferedReader
En este ejercicio, se va a construir una aplicación sencilla que obtiene la entrada de datos desde teclado.
EL programa usará las clases BufferedReader e InputStreamReader para recibir los datos de entrada. También se aprenderá a usar Javadoc para obtener más información de las clases Java.
(1.1) Construir y ejecutar el programa Java GetInputFromKeyboard
1. Crear un proyecto NetBeans
- Seleccionar del menú superior File y seleccionar New Project.
- Aparece el diálogo New Project.
- Seleccionar Java en la sección Categories y Java Application en la sección Projects.
- Click Next.
- En la sección Name and Location, en el campo Project Name escribir MyGetInputFromKeyboardProject.
- En el campo Create Main Class,
escribir GetInputFromKeyboard.
(Figura-1.10)
- Click Finish.

Figura-1.10: Creación de
MyGetInputFromKeyboardProject
- Observar que el nodeo del proyecto MyGetInputFromKeyboardProject se crea en el panel Projects de
NetBeans IDE y que se genera y muestra GetInputFromKeyboard.java en la ventana del editor.
2. Modificar el código generado GetInputFromKeyboard.java como se muestra en
Código-1.11. Estudiar el código prestando atención a los comentarios en negrita. Por ahora se usarán las clases BufferedReader and
InputStreamReader sin entrar en más detalles.
/* * To change this template,
choose Tools | Templates * and open the template in the
editor. */
import
java.io.BufferedReader; import java.io.IOException; import
java.io.InputStreamReader;
/** *
* @author
*/ public class GetInputFromKeyboard
{
/** * @param args the command line
arguments */ public
static void main(String[] args)
{
// Create BufferedReader object from Standard
input device. //
Standard input device is typically a
keyborad.
BufferedReader dataIn = new
BufferedReader(new
InputStreamReader( System.in)
);
// Prompt a user to enter his/her
name String name =
"";
System.out.println("Please Enter Your
Name:");
// Read data into name
variable
try{
name = dataIn.readLine();
}catch( IOException e
){
System.out.println("Error!");
}
// Display the name
System.out.println("Hello " + name +"!");
} }
|
Código-1.11:
GetInputFromKeyboard.java
3. Construir (Build) y ejecutar (Run) el programa
- Hacer click con el botón derecho del ratón en MyGetInputFromKeyboardProject
y seleccionar Run.
- Observar que el programa espera una entrada del usuario.
- Escribir un nombre debajo de la línea "Please Enter
Your Name:" en la ventana Output y pulsar la tecla Enter. (Figura-1.12)

Figura-1.12: Ingreasr nombre
- Observar que se muestra en la ventana Output Hello <nombre escrito >. (Figura-1.13
y Figura-1.14 below)
Please Enter Your Name: Sang
Shin Hello Sang Shin! |
Figura-1.13:
Resultado

Figura-1.14: Impresión de datos ingresados
4. Modificar
GetInputFromKeyboard.java para que lea la edad (age) como se muestra en Código-1.15. El fragmento de código que se rquiere añadir se muestra resaltado en
negrita y de color azul.
/* * To change this template,
choose Tools | Templates * and open the template in the
editor. */
import java.io.BufferedReader; import
java.io.IOException; import
java.io.InputStreamReader;
/** * * @author
*/
public class GetInputFromKeyboard
{
/** * @param args the command line
arguments */ public
static void main(String[] args)
{
// Create BufferedReader
object from Standard input
device. // Standard input
device is typically a
keyboard. BufferedReader
dataIn = new
BufferedReader(new
InputStreamReader( System.in)
);
// Prompt a user to enter
his/her name String name =
"";
System.out.println("Please Enter Your
Name:");
// Read entered data into
name variable
try{
name = dataIn.readLine();
}catch( IOException e
){
System.out.println("Error!");
}
// Display the
name
System.out.println("Hello " + name
+"!");
// Prompt a user to enter his/her age
String age= "";
System.out.println("Please Enter Your Age:");
// Read entered data into age variable
try{
age = dataIn.readLine();
}catch( IOException e ){
System.out.println("Error!");
}
// Display the name and age
System.out.println("Hello " + name +"!" + " " + "Your age is " +
age); }
}
|
Código-1.15: Añadir código para pedir al usuario ingrese su
age
5. Construir y ejecutar el programa
- Hacer click con el botón derecho del ratón en MyGetInputFromKeyboardProject
y seleccionar Run.
- Observar que el programa espera una entrada de usuario.
- Escribir un nombre y pulsar la tecla Enter.
- Escribir la edad (age) y pulsar la tecla Enter.
- Observar que se mueatra el mensaje Hello <nombre ingresado >, en la ventana Output window del IDE. (Figura-1.16)
Please Enter Your Name: Sang
Shin Hello Sang Shin! Please Enter Your Age: 100 Hello Sang
Shin! Your age is 100
|
Figura-1.16: Impresión del nombre y edad
Volver al inicio del ejercicio
(1.2) Convertir los valores de entrada de tipo String a un valor de tipo int
Supongamos que se queire añadir la siguiente lógica al programa.
Si la edad (age) es mayor a 100,
mostrar
Hello <name>, you are
old!
En otro caso
Hello <name>, you are
young!
|
Notar que en el código anterior, el programa recibe age como de tipo
String. Por ello no se puede comparar el tipo String "99" con el tipo primitivo
int 100. En otras palabras, se tiene que convertir el tipo
String
"99" a tipo
int 99
antes de compararlo con otro tipo
int
100.
Para ello existe un método llamado
parseInt() en la clase
Integer para convertir el tipo
String en tipo
int.
1. Visualizar la documentación Java (Javadoc) para la clase
Integer.
- En un navegador ir a http://download.oracle.com/javase/6/docs/api/
- Observar que se muestra la página raíz de Javadoc.
- Desplazar abajo para ver la clase Integer
en el recuadro inferior izquierdo.
- Click Integer.
- Observar que se muestra la documentación de la clase Integer en la sección derecha del navegador. (Figura-1.20)

Figura-1.20: Javadoc de la clase Integer
- Desplazar abajo para visualizar el método parseInt(String
s).
- Observar que es un métod static. (Figura-1.21)

Figura-1.21: Javadoc del método
parseInt(String s)
- Pulsar en el hiperelace del método parseInt(String
s).
- Observar que se muestra la información detallada del método.
(Figura-1.22)
- Notar que el método lanza la excepción NumberFormatException.

Figura-1.22: Información detallada del método parseInt(String s)
2. Modificar
GetInputFromKeyboard.java para leer la edad ( age) como se muestra en Código-1.23. El fragmento que se necesita añadir está resaltado en
negrita y color azul.
/* * To change this template,
choose Tools | Templates * and open the template in the
editor. */
import java.io.BufferedReader; import
java.io.IOException; import
java.io.InputStreamReader;
/** * * @author
*/ public class GetInputFromKeyboard
{
/** * @param args the command line
arguments */ public
static void main(String[] args)
{
// Create BufferedReader
object from Standard input
device. // Standard input
device is typically a
keyboard. BufferedReader
dataIn = new
BufferedReader(new
InputStreamReader( System.in)
);
// Prompt a user to enter
his/her name String name =
"";
System.out.println("Please Enter Your
Name:");
// Read entered data into
name variable
try{
name = dataIn.readLine();
}catch( IOException e
){
System.out.println("Error!");
}
// Display the
name
System.out.println("Hello " + name
+"!");
// Prompt a user to enter
his/her age String age=
"";
System.out.println("Please Enter Your
Age:");
// Read entered data into
age variable
try{
age = dataIn.readLine();
}catch( IOException e
){
System.out.println("Error!");
}
// Display the name and
age
System.out.println("Hello " + name +"!" + " " + "Your age is " +
age);
// Convert the String type of age variable into int primitive type
variable ageint.
int ageint = Integer.parseInt(age);
// Now you can compare the int primitive type against int type value
100
if (ageint > 100){
System.out.println("Hello " + name +"!" + " " + "You are old.");
} else{
System.out.println("Hello " + name +"!" + " " + "You are
young.");
} }
}
|
Código-1.23: Modificación de
GetInputFromKeyboard.java
5. Construir y ejecutar el programa
- Hacer click con el botón derecho del ratón MyGetInputFromKeyboardProject
y seleccionar Run.
- Observar que el programa espera una entrada del usuario.
- Escribir un nombre ,y pulsar la tecla Enter.
- Escribir la edad (age) y pulsar la tecla Enter.
- Observar que se muestra el mensaje Hello <nombre ingresado >, en la ventana Output del IDE.
- Observar que se muestra el mensaje completo (Figura-1.24 below)
Please Enter Your Name: Sang
Shin Hello Sang Shin! Please Enter Your Age: 23 Hello Sang
Shin! Your age is 23 Hello Sang Shin! You are
young.
|
Figura-1.24: Resultado de ejecutar la aplicación
Volver al inicio del ejercicio
(1.3) Mostrar Javadoc en una manera sensitiva al contexto dentro de NetBeans IDE
En este ejercicio, se visualiza la documentación de la clase Integer en formato sensitivo al contexto. Antes de realizar este paso, asegurarse de hav¡ber descargado el fichero zip del la documentación del JSDK (
download) en un directorio.
1. Añadir el fichero J2SE Development Kit Documentation 6.0
a NetBeans.
- Seleccionar del menú superior Tools y seleccionar Java Platform. (Figura-1.31)

Figura-1.31: Abrir el gestor Java Platform
- Observar que aparece la ventana de diálogo del Java Platform Manager.
- Hacer click en la pestaña Javadoc.
- Click Add ZIP/Folder. (Figura-1.32)

Figura-1.32: Añadir fichero Javadoc
- Observar que aparece la ventana de diálogo Add ZIP/Folder.
- Buscar en el directorio donde se decargó el fichero zip jdk-6-docs.zip.
- Seleccionar el fichero zip jdk-6-docs.zip y pulsar en
Add ZIP/Folder. (Figura-1.33)

Figura-1.33: Selección del fichero jdk-6-docs.zip
- Observar que el fichero jdk-6-doc.zip se muestra en la sección Platform Javadoc. (Figura-1.34)
- Click Close.

Figura-1.34: adición del fichero
jdk-6-doc.zip
2.
Usar Javadoc en un contexto sensitivo.
- Mover el cursor encima de la cadena Integer en el editor del código fuente de NetBeans.
- Seleccionar Show Javadoc. (Figura-1.35)

Figura-1.35: Selección de Javadoc sobre Integer
- Observar que Javadoc de la clase Integer se muestra en el navegador (Figura-1.36)

Figura-1.36: Javadoc de la clase Integer
- Mostrar la documetación Java en contexto sobre la clase String.
Resumen
En este ejercicio, se ha visto cómo leer datos ingresados a través del dispositivo estandar de entrada, el teclado. También se ha visto el uso en línea de la documentación Java y cómo mostrar el Javadoc de una clase a travñes del formato sensitivo al contexto.
Volver al inicio
Ejercicio 2: Lectura de datos desde teclado con JOptionPane
En este ejercicio, se construirá la misma aplicación del ejercicio 1 pero con la utilización de la clase JOptionPane.
- Build
y run un programa Java que usa operadores condicionales
(2.1) Build y run un programa Java que usa operadores condicionales
1. Crear un proyecto NetBeans
- Seleccionar File en el menú principal y seleccionar New Project.
- Aparece el diálogo New Project.
- Seleccionar Java en la sección Categories y Java Application en la sección Projects.
- Click Next.
- En la sección Name and Location, en el campo Project Name, escribir MyInputFromKeyboardJOptionPaneProject.
- En el campo Create Main Class,
escribir InputFromKeyboardJOptionPane.
- Click Finish.
- Observar que el nodo del proyecto MyInputFromKeyboardJOptionPaneProject se crear en la sección Projects de NetBeans y se genera en la ventana del editor el fichero InputFromKeyboardJOptionPane.java.
2. Modificar el fichero generado InputFromKeyboardJOptionPane.java.
- Modifcar InputFromKeyboardJOptionPane.java como se muestra
en Código-2.21. Los fragmentos de código a añadir están resaltados en negrita y color azul.
import
javax.swing.JOptionPane;
/* *
InputFromKeyboardJOptionPane.java * * Created on January
24, 2010, 10:46 AM * * To change this template, choose
Tools | Template Manager * and open the template in the
editor. */
/** * * @author
*/ public class InputFromKeyboardJOptionPane
{ /** Creates a new instance
of InputFromKeyboardJOptionPane */ public
InputFromKeyboardJOptionPane() {
}
/** * @param args the command line
arguments */ public
static void main(String[] args)
{
String name =
"";
name=JOptionPane.showInputDialog("Please enter your
name");
String msg = "Hello
" + name + "!";
JOptionPane.showMessageDialog(null, msg);
} }
|
Código-2.21: InputFromKeyboardJOptionPane.java modificado
3. Construir y ejecutar el programa
- Hacer click con el botón derecho del ratón en MyInputFromKeyboardJOptionPaneProject y seleccionar Run.
- Aparece la ventana de diálogo Input.
- Escribir un nombre. (Figura-2.22)
- Click OK.

Figura-2.22: Ingresar nombre
- Observar que aparece la ventana de diálogo Message.

Figura-2.23: Impresión de Message
Resumen
En este ejercicio, se ha construído la misma aplicación del Ejercicio 1 utilizando en este caso la clase JOptionPane.
Volver al inicio
Tarea
1. La tarea es modificar el proyecto anterior MyInputFromKeyboardJOptionPaneProject. Se sugiere como nombre de proyecto MyGetInputFromKeyboardJOptionPaneProject2.
- El programa debe preguntar el nombre y lo siguiente
- Mostrar la edad (age) ingresada como sigue
- Si age es mayor a 100, mostrar
- Hello <name>, you are old!
- En otro caso
- Hello <name>, you are young!