Logo Revista Java

startjavaabout

articles

00. Prólogo (java)
01.a TEMAS INTRODUCTORIOS. (java)
01.b Comandos que Inician la Máquina de Java y la salida de texto (java)
01.c Descripción empírica de la Programación Orientada a Objetos con Java. (java)
01.d Herencia Soportada por Java y Tipos de Datos Básicos. (java)
01.e Operadores, Delimitadores Básicos Y los nombres de función Válidos. (java)
02.a Codificación Inicial y Estructuras de Datos. (java)
02.b Paquetes, y Palabras clave, (Reservadas) (java)
02.c Tipos de Datos, y declaraciones de funciones, Tablas. (java)
02.d Bucles y Tomas de decisión, Excepciones y Control de Errores. (java)
02.e Secuencias de Escape (java)
02.f Concatenación y Conversiones a Texto. (java)
02.g Métodos de Entrada y Salida de datos (java)
02.h Crear Objetos de la biblioteca de Java (java)
02.i Ejercicio: Entrada de Datos y Conversiones (if, try, catch) (java)
02.j Ejercicios, usando excepciones y while, y switch (java)
02.k Práctica complementaria Resuelta sin Arreglos. (java)
02.l Ejercicios de la práctica complementaria (java)
02.m Práctica complementaria resuelta Ej 6 y 7 (java)
02.m Práctica complementaria resuelta Ej 8 y 9 (java)
03.a Métodos estáticos y mecanismos de programación (java)
03.b Arreglos (Arrays o Vectores) (java)
03.c La clase Math como ayudante para resolver problemas (java)
03.d Usando arreglos para un buffer, colas de espera, pilas y listas. (java)
03.e Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) (java)
03.f Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) 2da parte (java)
03.g Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) (java)
03.h Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) 2da parte (java)
03.i Implementación de una Lista de datos. (java)
03.j Búsqueda Secuencial dentro de la lista de datos. (java)
03.k Búsqueda Aleatoria dentro de la lista de datos. (java)
03.l Búsqueda binaria dentro de una lista ordenada de datos. (java)
03.m Método para Ordenar - La Burbuja (java)
03.n Método para Ordenar - QuickSort Recursivo (java)
03.o Ejercicios Resueltos, ordenar con Java (java)
04.a Nuestro primer Objeto en Java (java)
04.b Codificación del primer Objeto en Java (java)
Utilizamos los arreglos para guardar una lista de información, hacemos uso de la entrada por teclado y describimos el código fuente del ejercicio Resuelto.

03.i Implementación de una Lista de datos.

(351)
Utilizamos los arreglos para guardar una lista de información, hacemos uso de la entrada por teclado y describimos el código fuente del ejercicio Resuelto.
contact
Created,Modified
2009-04-02 11:57:58, 2009-05-07 19:10:52
Author,Nick
Gustavo Guillermo Perez, (madgus) [myblog]

Implementación de una Lista de datos.

En este caso la memoria temporal será una simple lista, se pretenderá que el usuario ingrese una lista de nombres y que en cualquier momento se pueda buscar, borrar, o agregar elementos.

Salida por pantalla:

gus@gusgus ~$ java com.compunauta.aprendiendojava.Cap3_lista

SELECCIONE UNA OPCIÓN:

1) Ingresar un elemento al listado

2) Listar los elementos de la lista

3) Borrar un elemento de la lista

0) Salir

opción?

1

Dato:?

Azul

opción?

1

Dato:?

Celeste

opción?

1

Dato:?

Caffe

opción?

1

Dato:?

Osos

opción?

2

Item[0]:[Azul]

Item[1]:[Celeste]

Item[2]:[Caffe]

Item[3]:[Osos]

SELECCIONE UNA OPCIÓN:

1) Ingresar un elemento al listado

2) Listar los elementos de la lista

3) Borrar un elemento de la lista

0) Salir

opción?

3

Item a borrar:?

2

SELECCIONE UNA OPCIÓN:

1) Ingresar un elemento al listado

2) Listar los elementos de la lista

3) Borrar un elemento de la lista

0) Salir

opción?

2

Item[0]:[Azul]

Item[1]:[Celeste]

Item[2]:[Osos]

gus@gusgus ~$


Ahora veamos el código:

  1. package com.compunauta.aprendiendojava;

  2. import java.io.*;

  3. /**

  4. * <p>Título: Aprendiendo Java</p>

  5. * <p>Descripción: Ejemplos del Libro Aprendiendo Java de Compunauta</p>

  6. * <p>Copyright: Copyright (c) 2006 www.compunauta.com</p>

  7. * <p>Empresa: COMPUNAUTA</p>

  8. * @author Gustavo Guillermo Pérez

  9. * @version 2006.01.01

  10. */

  11. public class Cap3_lista {

  12. //Variables globales

  13. public static int MAX=15;

  14. public static String[] lista=new String[MAX];

  15. public static int lista_elem=0;

  16. public static void main(String[] args) {

  17. BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));

  18. int op=-1;

  19. while(true){

  20. switch (op){

  21. case 1:

  22. System.out.println("Dato:?");

  23. ingresa(leerLinea(teclado));

  24. break;

  25. case 2:

  26. listar();

  27. break;

  28. case 3:

  29. System.out.println("Item a borrar:?");

  30. borrar(opcion(teclado));

  31. break;

  32. case 0:

  33. System.out.println("Terminado..");

  34. System.exit(0);

  35. break;

  36. }

  37. if(op!=1)imprimir_menu();

  38. System.out.println("opción?");

  39. op = opcion(teclado);

  40. }//fin del bucle eterno

  41. }//fin del método principal

  42. //Funciones auxiliares

  43. public static void ingresa(String dato){

  44. lista[lista_elem++]=dato;

  45. }

  46. public static void listar(){

  47. for (int i=0;i<lista_elem;i++){

  48. System.out.println("Item["+i+"]:["+lista[i]+"]");

  49. }

  50. }

  51. public static void borrar(int item){

  52. lista_elem--;

  53. for (int i=item;i<lista_elem;i++){

  54. lista[i]=lista[i+1];

  55. }

  56. }

  57. public static void imprimir_menu(){

  58. System.out.println("SELECCIONE UNA OPCIÓN:");

  59. System.out.println("1) Ingresar un elemento al listado");

  60. System.out.println("2) Listar los elementos de la lista");

  61. System.out.println("3) Borrar un elemento de la lista");

  62. System.out.println("0) Salir");

  63. }

  64. public static int opcion(BufferedReader buff){

  65. int lee=0;

  66. boolean error;

  67. do {

  68. error=false;

  69. try {return lee = Integer.parseInt(buff.readLine());}

  70. catch (NumberFormatException ex) {

  71. System.err.println("Entrada erronea, repetir:?");

  72. error=true;}

  73. catch (Exception ex){ex.printStackTrace(System.err);}

  74. } while (error);

  75. return lee;

  76. }//final de la funcion leer

  77. public static String leerLinea(BufferedReader buff){

  78. try {return buff.readLine();}

  79. catch (Exception ex){ex.printStackTrace(System.err);}

  80. return "";

  81. }//final de la funcion leer

  82. }//fin de la clase

En esta implementación agregamos un menú de usuario en pantalla que nos permitirá interoperar un poco mejor el programa para probar todas las opciones e incluso hacer experimentos y expandirlo con los ejemplos que seguirán a este.

Como antes entre las líneas 15 y 17 declaramos globalmente la lista, sus límites y el apuntador de elementos.

Nuestro método principal (línea 20) creará un objeto como antes hicimos para leer desde el teclado (o podría ser una fuente externa como la red en los ejemplos anteriores).

Definimos de manera local al método principal la variable op que almacenará la opción de menú que haya escogido el usuario (línea 21).

De la misma manera que antes ejecutamos indefinidamente el bloque while(true){} aunque podríamos igual que en todos los casos anteriores proponer una condición viable que también sea válida para terminar el programa como por ejemplo (op==0).

Cada cláusula case ejecutará la función correcta, para no producir una reimpresión excesiva molesta en la pantalla del menú de usuario sólo lo reimprimiremos si la opción de menú no fue la de agregar datos (línea 40).

En las líneas 41 y 42 imprimimos la leyenda para solicitar la opción. Podemos utilizar print en vez de println para que el ingreso de datos quede junto al signo de interrogación.

Función ingresa (línea 47), muy simple antes de aumentar en uno el contador de elementos se utiliza el valor del índice para almacenar el valor del dato que se desea ingresar a la lista.

Función listar (línea 51), listamos todos los elementos de la lista en pantalla indicando su índice en el arreglo de texto lista[].

Función borrar (línea 57), decrementamos en uno el contador de elementos y recorremos todos los elementos restantes a la posición que queremos eliminar.

Función imprimir_menu() (línea 64), sólo imprime en pantalla las opciones que compara el método principal para realizar acciones.

Función opción (línea 72), idéntica a leerInt que hemos estado viendo en todos estos ejemplos.

Función leerLinea (línea 86), idéntica a leerLinea de todos estos ejemplos anteriores.

Nota: a partir de aquí añadiremos funciones para experimentar con la lista, es ejercicio para el lector agregar a este ejemplo las entradas del menú y los correctos mecanismos para ejecutar esa funcionalidad en los bloques case del método principal.


leavecomment

*Hasta que esta leyenda no desaparezca el libro no ha sido terminado, descarge en pdf:

http://compunauta.com/forums/linux/programacion/java/ebook.html




Aprendiendo Java - Ejemplos resueltos, Ejercicios, prácicas y técnicas de programación con Java #1 - ezine - ©Compunauta - myblog - Anuncios - 1060