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.
packageGeral;importjavax.swing.*;publicclassinverter{staticfloatvetor(inty[]){for(inti=5;i<=1;i--){returny[i];}return0;}publicstaticvoidmain(String[]args){intx[]=newint[5];for(inti=0;i<5;i++){x[i]=Integer.parseInt(JOptionPane.showInputDialog("Entre com os valores"));}vetor(x);System.out.print("Vetor invertido: ");for(inti=0;i<5;i++){System.out.print(x[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…
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
packageGeral;importjavax.swing.*;publicclassinverter{staticfloat[]vetor(inty[]){floatretorno[]=newfloat[5];intcont=0;for(inti=4;i>=0;i--){retorno[cont]=y[i];cont++;}returnretorno;}publicstaticvoidmain(String[]args){intx[]=newint[5];for(inti=0;i<5;i++){x[i]=Integer.parseInt(JOptionPane.showInputDialog("Entre com os valores"));}x=vetor(x);System.out.print("Vetor invertido: ");for(inti=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”…
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 ?
GiancarloBraga
Putzzzz
Tenta mudar o nome do vetor que vai guardar o resultado final. De x pra y ou qualquer outra coisa. rs