GARANTIR DESCONTO

Fórum Como retornar 2 ou + valores em um método ? #568612

04/08/2011

0

Olá, Eu criei esse método :
public void setCalculo() {

		if (ano <= 2000) {
			desconto = 0.12;
			totAte2000 += 1;

		} else {
			desconto = 0.07;
			totMais2000 += 1;

		}

	}
E eu gostaria de criar um método getCalculo retornando os valores para o objeto:
double desconto;
int totAte2000;
int totMais2000;
Como eu faria isso ? Desde já. Obrigado, Gustavo
Gustavo

Gustavo

Responder

Posts

04/08/2011

Ricardo Viana

Retornando um array de valores:
    public int[] setCalculo() {
        
        if (ano <= 2000) {
            desconto = 0.12;
            totAte2000 += 1;

        } else {
            desconto = 0.07;
            totMais2000 += 1;

        }
        int[] valores = new int[] {totAte2000,totMais2000}; //Aqui você coloca os valores para retorno, separados por virgula
        return valores;
    }
Só não entendi o que esse seu método faz (nem tentei quando percebi que as variáveis eram globais).
Responder

Gostei + 0

04/08/2011

Douglas Eric

se as variaveis são de atributo (não globais que isso não é pascal!), então... pra que você quer retorná-las?
Responder

Gostei + 0

04/08/2011

Douglas Eric

Retorne um objeto que tenha como atributo os valores que voce precisa.
Responder

Gostei + 0

04/08/2011

Douglas Eric

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)
import javax.swing.JOptionPane;

public class ValorCarro {

	int valor;
	double valorFinal;
	int ano;
	boolean sair;
	double desconto;
	int totAte2000;
	int totMais2000;

	public void setinfo() {

		valor = Integer.parseInt(JOptionPane
				.showInputDialog("Digite o valor do carro"));
		ano = Integer.parseInt(JOptionPane
				.showInputDialog("Digite o ano do carro"));
	}

	public int getValor() {
		return valor;

	}

	public int getAno() {
		return ano;
	}

	public void Calculo() {

		if (ano <= 2000) {
			desconto = valor * 0.12;
			totAte2000 += 1;

		} else {
			desconto = valor * 0.07;
			totMais2000 += 1;
		}
		valorFinal = valor - desconto;
	}

	public double getDesconto() {
		return desconto;
	}

	public double getValorFinal() {
		return valorFinal;
	}

	public int getTotAte2000() {
		return totAte2000;
	}

	public int getTotMais2000() {
		return totMais2000;
	}

	public void imprimir1() {
		JOptionPane.showMessageDialog(null,
				"O valor final do carro com desconto é de \n" + "R$ "
						+ valorFinal);
	}

	public void setSair() {

		int y = 0;

		y = Integer
				.parseInt(JOptionPane
						.showInputDialog("Você deseja continuar a usar o programa ?" + "\n"
								+ "Digite (1)- Sim , (2)- Nao"));

		switch (y) {
		case 1:
			sair = true;
			break;
		case 2:
			sair = false;
			break;
		}

	}

	public boolean getSair() {
		return sair;
	}

	public static void main(String[] args) {

		ValorCarro a1 = new ValorCarro();

		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
Responder

Gostei + 0

11/08/2011

Ial Silva

Pelo que eu entendi tu quer reduzir o tamanho do teu código?!?!?!? Começa declarando as variáveis que são do mesmo tipo, lado a lado.
Responder

Gostei + 0

11/08/2011

Douglas Eric

[quote="ialjonas"]Pelo que eu entendi tu quer reduzir o tamanho do teu código?!?!?!? Começa declarando as variáveis que são do mesmo tipo, lado a lado.
não, não e NÃO! "diminuir código" não tem nada a ver com diminuir o numero de linhas e sim deixar um código mais enxuto, resumido, e de facil leitura. Declarar mais variaveis do mesmo tipo é possível, mas é uma péssima tecnica. Deixa o código dificil de ler, e muito mais facil de você se perder e acabar fazendo algo que não devia quando for fazer manutenção do código. Se fosse só para diminuir linhas, você podia fazer o código inteiro em uma linha só.
Responder

Gostei + 0

23/03/2013

Douglas Eric

[quote="staroski"]Retorne um objeto que tenha como atributo os valores que voce precisa.
Caro staroski, achei interessante sua colocação. Supondo que eu tenha um código de uma calculadora, utilizando como GUI somente o JOptionPane. A calculadora deve receber 2 números (um de cada vez), a operação a ser realizada, realizar o cálculo e exibir o resultado. Esse seria um exemplo didático para meus alunos, então solicitei a eles que separassem cada atividade em um método diferente, portanto existem os seguintes métodos: + int pegaNumero1() + int pegaNumero2() + int pegaOperacao() -- utilizando switch case + double calculaResultado() + int exibeResultado() Como eu poderia fazer um único método que pegasse com 2 OptionPanes os 2 números, os armazenassem em um vetor e depois eu pudesse passar o resultado desse método para o método calculaResultado() ? Obrigado,
Responder

Gostei + 0

24/03/2013

Marcelo Senaga

[quote="airmigjr"][quote="staroski"]Retorne um objeto que tenha como atributo os valores que voce precisa.
Caro staroski, achei interessante sua colocação. Supondo que eu tenha um código de uma calculadora, utilizando como GUI somente o JOptionPane. A calculadora deve receber 2 números (um de cada vez), a operação a ser realizada, realizar o cálculo e exibir o resultado. Esse seria um exemplo didático para meus alunos, então solicitei a eles que separassem cada atividade em um método diferente, portanto existem os seguintes métodos: + int pegaNumero1() + int pegaNumero2() + int pegaOperacao() -- utilizando switch case + double calculaResultado() + int exibeResultado() Como eu poderia fazer um único método que pegasse com 2 OptionPanes os 2 números, os armazenassem em um vetor e depois eu pudesse passar o resultado desse método para o método calculaResultado() ? Obrigado,
Não basta ler o primeiro dado e jogar no vetor, ler o segundo dado e jogar no vetor e depois devolver o vetor via retorno do método?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar