Como eliminar la casilla de un arreglo en java?

Iniciado por fst091, 1 Abril 2016, 22:57 PM

0 Miembros y 2 Visitantes están viendo este tema.

fst091

Hola a todos, estoy realizando un programa en java, pero me quede atorado, no se me ocurre como hacer lo que me falta.
Primero no me elimina como tal el registro, solo vacía los datos del registro que deseo eliminar.
Segundo, no no se como realizar los cambios según sea el caso (por nombre, por edad,etc)
Tercero, como hacer las consultas por nombre y en total.
Si alguien podría ayudarme se los agradeceria muchisimo en imágenes coloco lo que tengo q hacer y a continuación coloco mi practica y después lo que llevo,de antemano gracias.

Sistema de altas, bajas y cambios

1. En equipos de 2 o 3 alumnos, implementar un pequeño sistema de altas, bajas y cambios

con las siguientes característcas:

a. Inicialmente el programa debe presentar un menú con los siguientes campos:

◦ 1.- Altas

◦ 2.- Bajas

◦ 3.- Cambios

◦ 4.- Consultas

◦ 5.- Salir

b. Las "Altas" incluyen la solicitud de información básica para una persona:

◦ Nombre Completo

◦ Edad

◦ Altura

◦ Genero

c. Las "Bajas" permiten la eliminación completa de alguno de los registros

existentes en el sistema. Para ello el sistema pregunta que registro se quiere

eliminar, si el registro no existe se debe mostrar un mensaje de error.

d. Los "Cambios" como su nombre lo indica permite hacer ajustes sobre algunos

de los registros. Cuando se selecciona la opción "cambios" el sistema pregunta

que registro se quiere modifcar (numérico), para posteriormente preguntar

que campo en partcular se quiere ajustar (Nombre, Edad, etc.).

e. La opción "Consultas" presenta el siguiente submenú:

◦ Por Nombre (presenta en forma completa todos lo registros que coincidan)

◦ Por Registro (presenta solo el registro solicitado)

◦ Total (presenta todos los registros)

f. La opción "Salir" cierra el programa.




LaiaxanIV

#1
Buenass!!!
Te has planteado usar ArrayLists? O tenéis restricción de que estructuras de datos podéis usar?
Si no, siempre puedes modificar las estructuras para que contengan un valor imposible, si lo contienen a la hora de mostrar no se mostrarian.
Para hacer un cambio, después de conocer el número de registro tienes que modificar la posición de cada vector dependiendo de la opción que haya elegido para modificar.
Me explico si el usuario elige el registro r=1 y la opcion nombre tendras que hacer nombre[r] = sc.nextLine();

Para las consultoras tendras que hacer un print de todos los vectores que tienes en el caso del total.
Por otra parte, si se elige por nombre, necesitaras un condicional para ver si la posición que estas consultando contiene o no el nombre que ha introducido el usuario. Si coinciden tendras que sacar por pantalla los datos.

En ambos casos necesitas recorrer de principio a fin los vectores.

fst091

Solo puedo usar lo que vi en el curso, y no se como usar los arraylist  :-( , por ende no puedo usarlos, podrias darme un ejemplo de como recorrer todos en la opción consultas, gracias

LaiaxanIV

#3
Si claro!
Supongamos que tienes que hacer un printe del total y tienes lo siguiente:

int MAX_SIZE = 30;
       int[] oc = new int[MAX_SIZE]; //Este lo usaremos para saber si una posición está o no ocupada.
       for(int i = 0; i < MAX_SIZE; ++i) oc[i] = -1; //-1 querra decir que la posición no ha sido ocupada.
       String[] name = new String[MAX_SIZE];
       int[] age = new int[MAX_SIZE];
       double[] height = new double[MAX_SIZE];
       
       for(int i = 0; i < MAX_SIZE; ++i){
           if(oc[i] != -1){
               System.out.println("Nombre: " + name[i]);
               System.out.println("Edad: " + age[i]);
               System.out.println("Altura: " + height[i]);
           }
       }


Si usas este metodo, usando oc para conocer si una posición ha sido usada o no, acuerdate que al dar de baja o al dar de alta, tienes que poner la posicion correspondiente un 0 o un -1.
Para hacer el caso del mostrar por nombre, en la condición de dentro del for, tendrías que añadir

if(oc[i] != -1 && name[i] == nombre)

donde nombre es el nombre que el usuario introduce.

Pruebalo, si tienes cualquier pregunta no dudes en hacérnosla saber.