Como eu passo um vetor por referencia para um metodo?

5 respostas
S
int calculaCombinacao(int a[],int b[]){

combinacao[] = a[];

moedas[] = b[];

:

:

Nao tá funcionando assim…

5 Respostas

M

bem, o vetor é um objeto, logo.. ele será passado por referencia normalmente (há algumas sutilezas neste processo... mas contanto q tu não tente mudar o valor da referencia do parametro, esta tudo bem..)... O erro é o fato de tu estar usando os colchetes em "a" e "b" na atribuição..., bem, assim ó:

int calculaCombinacao( int a[], int b[] ) { 
   int combinacao[],  moedas[];

   combinacao = a;
   moedas = b;
   ...
}

.. no caso, combinacao e moedas sao variaveis locais ao metodo... mas podem ser de instancia tb..

S

valeu matheus, vou testar.

obrigado pela resposta…(que rápido!)

na verdade eu quero trabalhar com estes vetores que estao chegando… eu vou poder alterar moedas e combinacao ? eh isso que tu disse que eu nao posso fazer ? (nao entendi muito bem)

mesmo assim obrigado…
valeu mesmo.

M

bem, tu pode sim alterar o conteudo dos vetores q vem pelos parametros, oq tu não pode, é alterar o valor da referencia deles e achar q depois do método ser executado, a referencia q foi passada pro parametro esta apontando pra este valor q tu atribuiu no método, digo, se tu tem isso ai:

void metodo1()
{
   int vetor[] = new int[] { 10, 100, 1000, 10000 };

   metodo2( vetor );

   // aqui, vetor não tem os valores 1 e 2!
}

void metodo2( int vetor[] )
{
   vetor = new int[2];

   vetor[0] = 1;
   vetor[1] = 2;
}

...não sei se consegui ser claro, pra mais detalhes, veja este link:

[url]http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=3845[/url]

S

bah, tá cada vez mais dificil… acho que eh a hora…
nao tá rendendo hj.

nao visualisei bem o que tu quiz dizer…

eu queria somente um método, que recebece 2 vetores, A[3 5 7] e
B [7 4 3]… depois fazia uma multiplicacao entre os valores, e no final retornava a soma pra quem chamou este metodo…

for (i=0,i<3,i++){

result+= a[i]*b[i];

}

return soma;

soh que eu nao consigo com que a/b do for recebam os valores que estao sendo passados.

M

bem, vejamos... o método seria algo como:

int soma&#40; int a&#91;&#93;, int b&#91;&#93; &#41;
&#123;
   int resultado = 0; 
   // sempre inicialize suas variaveis locais
   // antes de usá-las! &#58;&#41;

   for &#40; int i = 0; i &lt; a.length&#40;&#41;; i++ &#41;
      resultado += a&#91;i&#93; + b&#91;i&#93;;

   return resultado;
&#125;

...e em outro código, poderia chamar assim:

// inicialize os vetores com algum 
// valor diferente de zero..
int a = new int&#91;3&#93;;
int b = new int&#91;3&#93;;

int resultado = soma&#40; a, b &#41;;
Criado 14 de maio de 2004
Ultima resposta 15 de mai. de 2004
Respostas 5
Participantes 2