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.
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();}}
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.
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];
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
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
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.