Porque não cria um objeto com os campos necessários, instancia o mesmo no seu método, preenche os respectivos campos e retorna esse objeto?
Dessa forma teria todos os valores necessários e poderia manipular como quisesse.
Abraços.
G
gpellizzoni
Um método no Java não retorna mais de um objeto, mas pode retornar vários objetos dentro de um. Veja:
classFoo{// Você precisa inicializar esses campos em algum momento.doubledesconto;inttotAte2000;inttotMais2000;Object[]object;Foo(){object=newObject[3];}voidsetCalculo(intano){if(ano<=2000){desconto=0.12;totAte2000+=1;}else{desconto=0.07;totMais2000+=1;}object[0]=desconto;object[1]=totAte2000;object[2]=totMais2000;}Object[]getCalculo(){for(Objectobj:object){System.out.println(obj);}returnobject;}publicstaticvoidmain(String[]args){Foofoo=newFoo();foo.setCalculo(20);foo.getCalculo();}}
I
isaiaspf
Gustavo,
Eu não sei se entendi o que você está querendo como resultado, mas acho que isso soluciona seu problema:
Você pode também tentar retornar um array de strings, com seus dados depois converte devolta de string.
M
Mephy
o certo é criar uma classe, mas se insistir pelo método, crie um array de object e depois faça o cast:
private Object[] getCalculo() {
Object[] o = new Object[3];
o[0] = desconto;
o[1] = totAte2000;
o[2] = totMais2000;
}
...
Object[] o = getCalculo();
double desconto = (double)o[0];
int totAte2000 = (int)o[1];
int totMais2000 = (int)o[2];
R
rafaelaalves
:lol:
G
gustavo_souza
Oi Gente, obrigado !!
Desculpa eu acho que realmente eu fui muito vago na minha pergunta.
Mas o que queria era talvez reduzir o tamanho do código, retornando mais de um valor no mesmo método, pois achava que tinha algum jeito.
Consegui copilar o código que queria , ele acabou ficando meio grande, mas acho que não tem outro jeito. (??)
Vê o que vocês acham ? … acrescente sugestões !! (Obrigado)
importjavax.swing.JOptionPane;publicclassValorCarro{intvalor;doublevalorFinal;intano;booleansair;doubledesconto;inttotAte2000;inttotMais2000;publicvoidsetinfo(){valor=Integer.parseInt(JOptionPane.showInputDialog("Digite o valor do carro"));ano=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano do carro"));}publicintgetValor(){returnvalor;}publicintgetAno(){returnano;}publicvoidCalculo(){if(ano<=2000){desconto=valor*0.12;totAte2000+=1;}else{desconto=valor*0.07;totMais2000+=1;}valorFinal=valor-desconto;}publicdoublegetDesconto(){returndesconto;}publicdoublegetValorFinal(){returnvalorFinal;}publicintgetTotAte2000(){returntotAte2000;}publicintgetTotMais2000(){returntotMais2000;}publicvoidimprimir1(){JOptionPane.showMessageDialog(null,"O valor final do carro com desconto é de \n"+"R$ "+valorFinal);}publicvoidsetSair(){inty=0;y=Integer.parseInt(JOptionPane.showInputDialog("Você deseja continuar a usar o programa ?"+"\n"+"Digite (1)- Sim , (2)- Nao"));switch(y){case1:sair=true;break;case2:sair=false;break;}}publicbooleangetSair(){returnsair;}publicstaticvoidmain(String[]args){ValorCarroa1=newValorCarro();do{a1.setinfo();a1.getValor();a1.getAno();a1.Calculo();a1.getDesconto();a1.getValorFinal();a1.getTotAte2000();a1.getTotMais2000();a1.imprimir1();a1.setSair();a1.getSair();}while(a1.sair==true);JOptionPane.showMessageDialog(null,"Foram calculados "+"\n"+a1.totAte2000+" carros com ano até 2000 "+"e"+"\n"+a1.totMais2000+" carros com ano maior de 2000 ");}}
Valeu gente obrigado
M
Mephy
dava pra dar uma refinada né, principalmente uns “gets” que não são salvos em variável alguma aí, tão desperdiçando linhas e processamento
tenta pensar melhor linha a linha o que seu programa tá fazendo, mas tá indo no caminho certo n.n
P
peczenyj
Acho que vc pode Descrever uma classe que tenha esses atributos que vc quer retornar, nesse caso olhe para o seu dominio e veja o que faz mais sentido. Criar uma classe “por criar” pq vc fez “um metodo” nem sempre é uma boa escolha.
Por exemplo vc tem uma classe que sabe calcular desconto/valores E perguntar algo para o usuario usando swing. Eu pensaria em separar esses caras em algum momento.