Buenas! tengo una gran duda, utilize "
arraylist" para crear un
array dinamico, el cual obviamente crezca tanto como el usuario desee, ahora bien... Quiero pasar los datos que tenga un
arraylist de un
metodo a otro
public void Vehiculos () {
int op1, n;
String busca, busca2, matri, mark, model, col, cant
; do {
System.
out.
println("1.1- Registrar"); System.
out.
println("1.2- Modificar"); System.
out.
println("1.3- Eliminar"); System.
out.
println("1.4- Listar todos"); System.
out.
println("1.5- Buscar"); System.
out.
println("0- Volver"); op1 = dato.nextInt();
switch (op1) {
case 1:
System.
out.
print("Cuantos vehiculos desea registrar? "); n = dato.nextInt();
dato.nextLine();
for (int f= 0; f<n ; f++) {
System.
out.
print("Matricula: "); matri = dato.nextLine();
matricula.add(f, matri);
ArrayList<String> matriculaclon = (ArrayList<String>) matricula.clone();
mark = dato.nextLine();
marca.add(f, mark);
ArrayList<String> marcaclon = (ArrayList<String>) marca.clone();
model = dato.nextLine();
modelo.add(f, model);
ArrayList<String> modeloclon = (ArrayList<String>) modelo.clone();
col = dato.nextLine();
color.add(f, col);
ArrayList<String> colorclon = (ArrayList<String>) color.clone();
System.
out.
print("Cantidad de puertas: "); cant = dato.nextLine();
cantpuertas.add(f, cant);
ArrayList<String> cantpuertasclon = (ArrayList<String>) cantpuertas.clone();
}
break;
case 2:
break;
case 3:
System.
out.
print("Matricula del que desea eliminar: "); dato.nextLine();
busca2 = dato.nextLine();
for (int f= 0; f<matricula.size(); f++) {
if (f == matricula.indexOf(busca2)) {
matricula.remove(f);
marca.remove(f);
modelo.remove(f);
color.remove(f);
cantpuertas.remove(f);
}
}
break;
case 4:
System.
out.
println("Listado de vehiculos:"); System.
out.
println("-----------------------------"); for (int f= 0; f<matricula.size(); f++) {
System.
out.
println("Matricula: "+matricula.
get(f
)+" |Marca: "+marca.
get(f
)+" |Modelo: "+modelo.
get(f
)+" |Color: "+color.
get(f
)+" |Cantidad de puertas: "+cantpuertas.
get(f
)); }
break;
case 5:
System.
out.
println("Matricula del vehiculo que desea buscar: "); busca = dato.next();
for (int x = 0; x<matricula.size(); x++) {
if (x == matricula.indexOf(busca)) {
System.
out.
println("Matricula: "+matricula.
get(x
)+" Marca: "+marca.
get(x
)+" Modelo: "+modelo.
get(x
)+" Color: "+color.
get(x
)+" Cantidad de puertas: "+cantpuertas.
get(x
)); System.
out.
println("El vehiculo se encuentra en la posicion "+(x
+1)); }
}
break;
case 0:
MenuPrincipal();
}
}while (op1 != 0);
Como pueden ver aqui arriba, yo creo el
arraylist con diferentes nombres, y mi intencion es guardar de alguna forma, o pasar de alguna forma los datos de alguna de las array's a otro metodo el cual es este:
public void Alquileres () {
int op3, z;
do {
System.
out.
println("3.1- Alquilar"); System.
out.
println("3.2- Listar autos alquilados"); System.
out.
println("3.3- Consultar Estado"); System.
out.
println("0- Volver"); op3 = dato.nextInt();
switch(op3) {
case 1:
dato.nextLine();
System.
out.
print("Matricula del vehiculo: "); matri = dato.nextLine();
for (int f= 0; matricula.size()) {
}
}
}while(op3 != 0);
Posiblemente encuentren mas errores que no vienen al caso (Lo se soy muy nuevo en esto jaja!)... Utilize "
ArrayListnombre.clone" pero no puedo "clonarlo" a otro metodo, o mejor dicho no se como hacerlo :( , Por favor abstenerse de configurarme el codigo y pasarmelo, quiero aprender de mis errores, desde ya muchas gracias!
Te dí una respuesta mas trabajada por privado. Sin embargo, te responderé cortamente por acá. Para pasar variables de un método a otro existen 4 formas.
1. Que la variable sea una atributo de la clase que contenga los dos métodos:
public class MyClass{
private ArrayList<String> nombres = new ArrayList<>();
public void methodA() {
this.nombres.add("new name");
}
public void methodB(int index) {
System.
out.
println(this.
nombres.
get(index
)); }
}
2. Que la variable sea estática:
public class MyClass{
public static ArrayList<String> nombres = new ArrayList<>();
public void methodA() {
MyClass.nombres.add("new name");
}
public void methodB(int index) {
System.
out.
println(MyClass.
nombres.
get(index
)); }
}
3. Que la envíes como parámetro
public class MyClass{
public void methodA() {
ArrayList<String> nombres = new ArrayList<>();
nombres.add("new name");
methodB(nombres, 0);
}
public void methodB(ArrayList<String> nombres, int index) {
System.
out.
println(nombres.
get(index
)); }
}
4. Que la obtengas desde un método get, instanciando un objeto de la clase que la contiene:
public class MyClassA{
private ArrayList<String> nombres = new ArrayList<>();
public ArrayList<String>getNombres() {
return this.nombres;
}
}
public class MyClassB{
public void methodB(int index) {
MyClassA myClassA = new MyClassA();
System.
out.
println(myClassA.
getNombres().
get(index
)); }
}
En tu caso, la mejor es la número 1.
Saludos.-