Como crear un array (o arreglo) dinamico

Iniciado por MrSimpatia, 5 Octubre 2018, 22:24 PM

0 Miembros y 1 Visitante están viendo este tema.

MrSimpatia

Hola a todos, ya es mi 3er post (tengo miedo de ya parecer molesto  :rolleyes:) mi duda es,
como puedo crear un array (o arreglo) que no sea estatico, es decir que no quede con un valor fijo y pueda "crecer" cuando en programador o el usuario quiera
Ejemplo :
Código (java) [Seleccionar]
System.out.print("Cuantos se van a registrar? ");
x = dato.nextInt();
CI = new String [num+x];
nom = new String [num+x];
ape = new String [num+x];
tel = new String [num+x];
mail = new String [num+x];
if (num<=0) {
dato.nextLine();
for (int f= 0; f<CI.length; f++) {

System.out.print("CI: ");
CI [f] = dato.nextLine();
System.out.print("Nombre: ");
nom [f] = dato.nextLine();
System.out.print("Apellido: ");
ape [f] = dato.nextLine();
System.out.print("Telefono: ");
tel [f] = dato.nextLine();
System.out.print("Mail: ");
mail [f] = dato.nextLine();
System.out.println(" ");
}
                                        } if (num>0) {
dato.nextLine();
for (int f= num; f<CI.length ; f++ ) {

System.out.print("CI: ");
CI [f] = dato.nextLine();
System.out.print("Nombre: ");
nom [f] = dato.nextLine();
System.out.print("Apellido: ");
ape [f] = dato.nextLine();
System.out.print("Telefono: ");
tel [f] = dato.nextLine();
System.out.print("Mail: ");
mail [f] = dato.nextLine();
System.out.println(" ");
}
}
num = num + x;

Ignoren los datos que se piden, el problema de aqui es que cuando yo quiero "listar" estos arreglos con sus respectivos datos, los primeros datos ingresados quedan en "null", lo que pretendo yo con esto es que la array crezca sin perder los anteriores datos...
PD: "num" es un contador (nose el termino tecnico real aqui en colegio le llaman asi  :xD ) y "num" empieza con valor 0

3n31ch

Hola amigo, no es molestia que preguntes. Tengo algunas cosas que decirte antes de responder tu pregunta:

1. Se que muchos profesores y profesionales traducen la palabra Array en Arreglo. Sin embargo, eso no tiene ni el mas mínimo sentido. Una mejor traducción es "Colección".
2.- La palabra estático en programación puede llevar a confusión. Mejor usa la palabra "constante"... Con el tiempo entenderás porque lo digo.  (Tu mensaje se entendió perfectamente, pero tuve la sensación que seria bueno decírtelo por futuras preguntas).

Y ahora tu respuesta:

3.- Usa ArrayList, es algo así como una colección de objetos dinámicos, se usa de la siguiente forma:

Código (java) [Seleccionar]
ArrayList<String> nombres = new ArrayList<String>();
nombres.add("MrSimpatia");
System.out.println(nombres.get(0));


Si te das cuenta entre los caracteres <> puse la clase de los objetos que deseo guardar en dicho array dinámico. Ojo, que estoy hablando de clases y objetos, por tanto no puedes almacenar un int en un ArrayList. En caso de querer guardar un tipo de dato primitivo, utiliza el wrapper:

Código (java) [Seleccionar]
ArrayList<Integer> edades = new ArrayList<Integer>();

PD: Ten cuidado con los cambios entre nextInt y nextLine. ArrayList tiene un bug en donde el buffer del mismo se complica y aveces se salta un nextInt (algo así recuerdo).

Saludos.-

MrSimpatia

#2
Listo busque un poco sobre ArrayList y vi como utilizarlo, la verdad me sirvio mucho, mil y un gracias, no te haces una idea de la ayuda que me brindaste  ;D
En serio te estoy muy agradecido!