Como passar um vetor como parametro para um metodo?

12 respostas
S

Como o titulo do assunto já diz…

como passar um vetor como parametro para um metodo?

12 Respostas

FieroddPJ

assim ó

public void metodo(String[] array){}

String[]
int[]
double[]

sao declarações de vetores(arrays)

S

E no caso de eu querer passar um vetor de 3 posição para um método de ordenação
vet[0]=3
vet[1]=1
vet[2]=2

para ordenar em ordem decrescente…

public void setMetodoOrdenaVet(int[] vt){

codigo de ordenação

}

Ficarai assim como fiz??? :razz: [/code]

L

na verdade imagino que queira devolver o array ordenado depois né?
nesse caso deveria ser assim…

public int[] setMetodoOrdenaVet(int[] vt){
codigo de ordenação...
}

ao invés de retornar um void, ou seja, nada, você retorna seu array…

só falta o código de ordenar! auehuahe

abraço!

S
É isso ai entendi o que não sei como fazer é fazer a passagem tipo assim
class teste{
	public int vet[] = new int[2];
	public void setOrdena(int[] vt){
		int Aux=0, j=0;
		for(int i=0;i<=2;i++){
			Aux = vet[i];
			vet[i] = vet[j];
			vet[j] = Aux;
		}
	}
	public static void main(String args[]){
		teste t = new teste();
		int vet[] = new int[2];
		t.setOrdena("é aqui que não sei como passar o parametro");
	}

}

Então não sei como passar no o paremetro momento que chama o metodo...

t.setOrdena(parametro); não sei como??

BrunoBastosPJ

nesse método você esta iniciando uma variavel local vt que nao esta sendo usada pois você esta usando a variavel global vet.

para passar como parâmetro seria

int[] vet = new int[2];
vet[0] = 1;
vet[1] = 2;

setOrdena( vet );
S
Estou usando esse codigo e não esta dando certo
class teste{ 
   public int vet[] = new int[3];
   public teste(){
   	vet[0]=3;
   	vet[1]=2;
   	vet[2]=1;
   }
   public void setCal(){
   	setOrdena(vet);
   	for(int i=0;i<=2;i++){ 
     	System.out.println("="+vet[i]);
     } 
   }
   
   public void setOrdena(int[] vt){ 
      int Aux=0, i=0,j=i+1; 
      for(i=0;i<2;i++){       	
      	if(vet[i]>vet[j]){
         	Aux = vet[i]; 
         	vet[i] = vet[j]; 
         	vet[i] = Aux;
         } 
      } 
   }
   public static void main(String args[]){ 
      teste t = new teste(); 
      t.setCal();
   } 
}
L

Soh alguns comentarios

  1. Se vc vai ordenar vet (atributo da classe), para que passar por parametro para o método da classe?
  2. afinal, quanto tu quer que vet[i] vale? hehe
vet[i] = vet[j];
vet[i] = Aux;
  1. Esse seu método de ordenação não tem lógica nenhuma heheh aconselho dar uma estudada em algum, afinal, j vai sempre ser 1? não teria que incrementa-lo, e sobre a posicao 0 do seu vetor, vc só vai comprar com a posicao 1, e se tiver certo vai presumir que esteja correto ja para sempre? Se é trabalho de escola para ordenação, então melhor dar uma olhada antes no método, fazer uns testes de mesa e tal, senão, porque você não usa direto “Arrays.sort(vet);”?
L

ah, não é a melhor forma de se ordenar, mas, a principio funciona… substitui no seu setOrdena e depois olha as diferenças e tenta entender os seus erros (porque não ordenava), não simplesmente copia o código.

int Aux;
      for (int i = 0; i < vet.length; i++)
      {
         for (int j = i + 1; j < vet.length; j++)
         {
            if (vet[i] > vet[j])
            {
               Aux = vet[i];
               vet[i] = vet[j];
               vet[j] = Aux;
            }
         }
      }
S

Bom …
É o seguinte …quero saber como faço para passar o parametro em forma de vetor na chamada do método …
Fiz o codigo na mesma classe para ficar mais facil o que quero aprender …

E ainda estou com a duvida …
Quero aprender a passar o parametro no chamado do método…

???

W

Sfing,

Blz cara, seguinte,

implementei aqui e funcionou, acho que a solução para sua dúvida está no código, da uma examinada. No caso eu implementei um método de ordenação que achei na internet, mas você usa o seu aí !!
da uma atenção no método main da classe, tem duas passagens de vetores.

public class Principal {

	public static void main(String[] args){
	
		int[] v1 = {4, 3, 2, 1};			
		int[] v2 = {2, 1};
		
		setOrdena(v1);		
		printVetor(v1);
			
		setOrdena(v2);		
		printVetor(v2);		
		
	}
	
	private static void printVetor(int[] v){
		
		StringBuffer sb = new StringBuffer();
		
		for(int i = 0; i < v.length; ++i)
			sb.append(v[i]);
		
		System.out.println();
		System.out.println("vetor de tamanho: " + v.length
			+ "\nordenado: " + sb.toString());
			
	}
	
	private static void setOrdena(int[] ordena){
		
		int x, i;
		
		for(int j = 1; j < ordena.length; ++j){
		
			x = ordena[j];
			
			for(i = j - 1; i >= 0 && ordena[i] > x; --i)
				ordena[i + 1] = ordena[i];
			
			ordena[i + 1] = x;
		
		}			
	}	
}

abs,

L

“sfing”:
Bom …
É o seguinte …quero saber como faço para passar o parametro em forma de vetor na chamada do método …
Fiz o codigo na mesma classe para ficar mais facil o que quero aprender …

E ainda estou com a duvida …
Quero aprender a passar o parametro no chamado do método…

???

meu deus… cara, deu erro de compilação no que você tinha feito? colocando o vet ali deu erro de compilação? não deu certo? então é porque você pode fazer isso, tava certo como vc passava o parâmetro… agora o motivo de não estar odenando o vetor, era por outra coisa, nada a ver com o parâmetro, e você chegou aqui falando que não funcionou e que ainda não estava ordenando. Se você entendeu o que eu falei no item 1 ia ver, eu disse que o vetor que vc passou por parametro não era usado no seu método, então não fazia sentido passa-lo… mas se quizer usar, é só trocar o vet pelo vt dentro do método, pronto…

Se sua duvida é passar array por parametro faz isso:

class Teste
{
   public static void main(String[] args)
   {
      Teste t = new Teste();
      int[] v = new int[3];
      v[0] = 1;
      v[1] = 2;
      v[2] = 3;
      t.listaVetor(v);
   }

   public void listaVetor(int[] vet)
   {
      for (int i = 0; i < vet.length; i++)
      {
         System.out.println(vet[i]);
      }
   }
}

Exemplo mais basico para passar vetor como parametro impossivel… Agora você tem que endender.

S

Ai galera … valeu por me ajudar …
Entendi tudo …

Criado 15 de agosto de 2006
Ultima resposta 16 de ago. de 2006
Respostas 12
Participantes 6