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:

Ejercicios


Ejercicio 0: Descarga de documentación JDK


1. Usando un navegador Internet, ir a http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. Bajar en la página y seleccionar el botón de descarga de la documentación Java SE 6.







3. Guardar el fichero en un directorio cualquiera. El nombre del fichero es algo parecido a jdk-6u19-docs.zip.


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



Figura-1.10: Creación de MyGetInputFromKeyboardProject
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

Figura-1.12: Ingreasr nombre
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
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.

Figura-1.20: Javadoc de la clase Integer

Figura-1.21: Javadoc del método parseInt(String s)

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
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.

Figura-1.31: Abrir el gestor Java Platform

Figura-1.32: Añadir fichero Javadoc

Figura-1.33:  Selección del fichero jdk-6-docs.zip

Figura-1.34: adición del fichero jdk-6-doc.zip

2. Usar Javadoc en un contexto sensitivo.

Figura-1.35: Selección de Javadoc sobre Integer

Figura-1.36: Javadoc de la clase Integer

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

  1. 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

2. Modificar el fichero generado InputFromKeyboardJOptionPane.java.
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


Figura-2.22: Ingresar nombre


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