Ajuda com inversão de vetores usando método

19 respostas
dambros

Bom dia a todos,

Conforme título preciso elaborar um programa que na classe Main peça a um usuário qualquer 5 valores para um vetor e passe como argumento para um método que me retorne os valores que ele entrou de forma invertida, além do fato de eu precisar que retorne valores em float.

Até agora cheguei ao algoritmo abaixo, mas como podem ver ele não esta realizando a inversão. Agradeceria qualquer ajuda.

package Geral;

import javax.swing.*;

public class inverter {
	
	static float vetor(int y[]){
		for (int i=5; i<=1; i-- ){
			return y[i];
			
		}
		return 0;
	}
	
	public static void main(String [] args){
		
		int x[] = new int [5];
		
		for (int i = 0; i<5; i++){
			x[i] = Integer.parseInt(JOptionPane.showInputDialog
			("Entre com os valores"));
		}
		
			vetor(x);
			
			System.out.print("Vetor invertido: ");
		for (int i = 0; i<5; i++){
			System.out.print(x[i]+" ");
	   }
	}	
}

Agradeço desde já.

19 Respostas

GiancarloBraga

Fala cara, tudo bem contigo?

Olha:

for(int i = array.length; i >= 0; i–){

novoArray[i];

}

Tenta isso.
Ele pega o array original, e faz um for decrementando.
Enquanto ele lê de trás para frente esse array, vai gravando em um novo.
Acho que dá certo.

Abraço.

foxpv

esse método retorno o vetor de 5 posicoes invertido…

static int[] vetor(int y[]){  
       int retorno[] = new int[5];
       int cont=0; 
       for (int i=4; i>=0; i-- ){  
             retorno[cont] = y[i];
             cont++;  
         }  
         return retorno;  
     }
dambros

Bom, incrementei o código do foxpv, substituindo meu método por ele e mesmo assim não inverteu…

Giancarlo, tudo certo cara e por ae? Andei meio sumido MSN por causa de trampo novo e tal hehe… mas enfim:
Fazendo o acréscimo desse seu código eu devo retornar esse novoArray?

Tipo acho que o problema está no Main, pois ele sempre imprime o valor como se nem no método vetor tivesse passado,

GiancarloBraga

E ae cara.
Eu também estou trampando agora. Rs
Complicou pra estudar Java…hehehe…Andei meio parado, mas ainda tento estar na ativa, o Java não pode parar!

Olha.
Você pode criar os vetores como um campo da sua classe. Ou seja, fora dos métodos. Assim os valores estarão acessíveis a todos os métodos. Tentou isso?

foxpv

cara,
no main vc tem q atribuir o vetor antigo pelo retornado no metodo assim:

x = vetor(x);
dambros

Hmm agora deu certo!

Mas o método está em retornando int correto?

Para que ele retorne float preciso alterar o tipo de retorno, so que acontece que elefala que não pode converter de int para float[].

GiancarloBraga

Você está tentando retornar o quê?
O array inteiro?

dambros

GiancarloBraga:
Você está tentando retornar o quê?
O array inteiro?

Sim o método vetor vai retornar os 5 valores do Array invertido.

GiancarloBraga

static float[] vetor(){
Tentou isso?

dambros

Exato, mas com isso ele me retorna um erro dizendo que não podeconverter int para float[].

GiancarloBraga

Cola como está ficando o método.
Acho que um casting poderia resolver.

dambros
package Geral;

import javax.swing.*;

public class inverter {
	
	static float[] vetor(int y[]){    
		float retorno[] = new float[5];  
        int cont=0;   
        	for (int i=4; i>=0; i-- ){    
            retorno[cont] = y[i];  
             cont++;    
         }    
	          return retorno;    
	     }
	
	public static void main(String [] args){
		
		int x[] = new int [5];
		
		for (int i = 0; i<5; i++){
			x[i] = Integer.parseInt(JOptionPane.showInputDialog
			("Entre com os valores"));
		}
		
			x = vetor(x);
			
			System.out.print("Vetor invertido: ");
		for (int i = 0; i<5; i++){
			System.out.print(x[i]+" ");
	   }
	}	
}

Na parte x = vetor(x) ele diz está errado e fala:
Cannot convert from float[] to int[].

GiancarloBraga

Você por acaso está tentando gravar o valor do vetor na posição X na variável X?
x = vetor[x];
Será que não é isso? Com colchete?

dambros

Na verdade o que estou tentando é gravar os valores retornados pelo método na variavel X.

GiancarloBraga

Ahhhhhh
O método se chama VETOR. rs.
Não tinha reparado.

Tenta isso:
x = (int) vetor(x);

E isso:
x = (float) vetor(x);

Uma das opções é o casting correto.
x é de inteiros, e o retornado é de float.

dambros

Agora fico com “Cannot cast from float to int”…

:confused:

O coisa chata viu!

GiancarloBraga

É…
O Java prioriza alta confiabilidade quanto à proteção de possíveis perdas de precisão e ferra. Rs

Tentou as DUAS opções de cast que te mandei?
(float) e (int)? Eu editei e inclui uma. Não lembro qual era a certa.

dambros

A opção:
x = (float) vetor(x) -> Cannot cast from float to int[].
x = (int) vetor(x) -> Cannot cast int to int[].

E agora ? :confused:

GiancarloBraga

Putzzzz
Tenta mudar o nome do vetor que vai guardar o resultado final. De x pra y ou qualquer outra coisa. rs

Criado 24 de outubro de 2007
Ultima resposta 24 de out. de 2007
Respostas 19
Participantes 3