Problema con un metodo (arrays)

Iniciado por KaRaLLo, 21 Enero 2012, 14:45 PM

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

KaRaLLo

En este método lleno mi array int capCaixaGz=new int[5] de numeros aleatorios. El método funciona perfectamente, el problema, es que luego quiero hacer lo mismo con otro array.


public void setCapCaixNv(){

for (byte i = 0; i < capCaixaGz.length; i++)
capCaixaGz[i]=(int) Math.floor(Math.random()*1000000);

}//fin del metodo setCapCaixaNv



Lo que me gustaría hacer sería esto



public void setCapBanco(int BANCO){

for (byte i = 0; i < BANCO.length; i++)
BANCO[i]=(int) Math.floor(Math.random()*1000000);

}//fin del metodo setCapBanco


Mi duda es como puedo asignarle a mi array capCaixaGz la referencia banco para poder introducirlo despues en el método ???.

Muchas gracias
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Proteus1989

public void setCapBanco(int BANCO){

Le estas pasando un entero no un array!

KaRaLLo

Potreus no me estas entendiendo quiero usar ese metodo para introducir dos arrays por ejemplo

setCapBancos(CapCaix[])

y mas a delante

setCapBancos(CapSantander[])
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Proteus1989

Pues...

public void setCapBanco(int[] banco)
{

for (byte i = 0; i < banco.length; i++)
banco[i]=(int) Math.floor(Math.random()*1000000);

}//fin del metodo setCapCaixaNv


Luego llamas a setCapBanco(vectorBanco1), setCapBanco(vectorBanco2), setCapBanco(vectorBanco3) y los va modificando
Como es memoria dinámica no hace falta devolverlo.

KaRaLLo

Cita de: Proteus1989 en 21 Enero 2012, 16:29 PM

Luego llamas a setCapBanco(vectorBanco1), setCapBanco(vectorBanco2), setCapBanco(vectorBanco3) y los va modificando
Como es memoria dinámica no hace falta devolverlo.

No he entendido lo ultimo. lo que no se como hacer es como asociarle banco[] a un vector por ejemplo :



banco[]=vector[]

//esto tira error
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Proteus1989

El problema es que no tienes los conceptos claros, se nota que estás empezando :)

1) En java todos los objetos, arrays son dinamicos. Es decir, lo que ti tienes no es la memoria tal cual, sino un puntero que apunta a la dirección de memoria donde está guardada la información.

2) Para asignar un vector a otro es vector = blanco, sin los corchetes

3) Basandome en lo que he dicho en el primer punto cuando tu haces

int[] banco1 = new int[10];
setCapBanco(banco1);

Automaticamente se queda guardado en banco1. Lo que le has pasado a setCapBanco no es el array, sino el puntero de donde tiene que escribir.

No se si te he ayudado o te he liado más. Pero si no entiendes la memoria dinámica y los punteros que se usan en por ejemplo c, c++ es dificil entender el funcionamiento de java.

KaRaLLo

Cita de: Proteus1989 en 21 Enero 2012, 16:55 PM
El problema es que no tienes los conceptos claros, se nota que estás empezando :)

1) En java todos los objetos, arrays son dinamicos. Es decir, lo que ti tienes no es la memoria tal cual, sino un puntero que apunta a la dirección de memoria donde está guardada la información.

2) Para asignar un vector a otro es vector = blanco, sin los corchetes

3) Basandome en lo que he dicho en el primer punto cuando tu haces

int[] banco1 = new int[10];
setCapBanco(banco1);

Automaticamente se queda guardado en banco1. Lo que le has pasado a setCapBanco no es el array, sino el puntero de donde tiene que escribir.

No se si te he ayudado o te he liado más. Pero si no entiendes la memoria dinámica y los punteros que se usan en por ejemplo c, c++ es dificil entender el funcionamiento de java.



Vamos a ver si me aclaro xD, imagínate que tengo el este metodo



public void imprimir(int vector1[]){

for(int i=0;i<vector1.length;i++)
System.out.println(vector1[i])
}



Luego puedo utilizar este metodo de esta forma :


imprimir(vector2[])


porque le estoy pasando donde tiene que realizar el metodo, y de esta forma me va a imprimir el vector 2 dado este ejemplo ?
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Proteus1989


KaRaLLo

Gracias potreus, has si de gran ayuda, la verdad esque soy estudiante de DAM, (antiguo DAI), y la profesora que tengo es un poco retrasada

(eso lo digo sacando un 10 en el módulo de programación de la pasada evaluación)

Si supieras de alguna documentación de java que te hubiera sido realmente útil estaría verdaderamente agradecido.
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Proteus1989

http://foro.elhacker.net/java/manual_java_basico_pdf_y_1027_paginas-t206793.0.html
Ese es muuuy completo y creo que lo empieza a explicar todo bastante bien desde el principio.