Calculadora - Problema com a minha lógica?

6 respostas
S

Boa tarde, galera!

Bom, eu iniciei a poucos dias em um curso de Java Básico.
Acho que por uma falta de atenção minha, eu acabei não dando a devida atenção necessária no começo do curso e, por este motivo estou me sentindo meio perdido neste momento, como vocês irão ver no exercício abaixo.
O exercício é algo muito simples, uma calculadora básica.

/**

  • Exercício 08
  • Escreva uma classe em Java que simule uma calculadora bem simples.
  • Essa classe deve ter como atributos duas variáveis double e um char.
  • Deve possuir um construtor que recebe como parâmetro dois números e um caracter, correspondente a uma das operações básicas (+, -, *, /).
  • Deve ter um método para calcular a operação desejada e um para imprimir o resultado. O programa deve considerar divisões por zero como sendo erros,
  • e imprimir uma mensagem adequada.
    */

Certo, vamos lá.

Eu criei a classe: CalculadoraExecucao, dentro dela declarei como private: 2 Double’s e 1 char.
Criei os métodos soma, diminui, multiplica e divide - com um if para checar se o valor não é 0, caso seja, retorna uma msg e finaliza -.
Criei um construtor: CalculadoraExecucao.
E gerei os get’s e set’s pelo próprio eclipse.

Até aí, acho que está correto, ou não, né? :frowning:

Certo, agora eu gostaria de usar um Scanner para receber os valores e o operador, ao invéz de declará-los diretamente na hora de instanciá-lo.
Estou aqui para aprender, não gostaria que ninguém fizesse por mim, pois, de nada adianta “copiar e colar”, se na hora do vamos ver, eu estarei sozinho e preciso entender para poder seguir em frente.

Gostaria de saber de vocês, colegas já mais avançados, se eu interpretei o exercício de maneira correta e estou seguindo na direção certa para execução do mesmo.

Obrigado desde já.

PS: Eu já olhei pelo fórum, vários exemplos de calculadoras, mas ainda sim, continuo com dúvida em relação ao que eu estou fazendo.

/**
 * @author admin
 *
 */

/**
 * Exercício 08
 * Escreva uma classe em Java que simule uma calculadora bem simples.
 * Essa classe deve ter como atributos duas variáveis double e um char.
 * Deve possuir um construtor que recebe como parâmetro dois números e um caracter, correspondente a uma das operações básicas (+, -, *, /).
 * Deve ter um método para calcular a operação desejada e um para imprimir o resultado. O programa deve considerar divisões por zero como sendo erros,
 * e imprimir uma mensagem adequada. 
 */

public class CalculadoraExecucao {

	private Double n1;
	private Double n2;
	private char operador;
	
	// Método para somar
	public void soma() {
		System.out.println(this.n1 + this.n2);
	}
	
	// Método para diminuir
	public void diminui() {
		System.out.println(this.n1 - this.n2);
	}
	
	// Método para multiplicar
	public void multiplica() {
		System.out.println(this.n1 * this.n2);
	}
	
	// Método para dividir
	public void divide() {
		if (this.n2 == 0) {
			System.out.println("Impossível dividir por 0.\nEncerrando programa de cálculos.");
			System.exit(0);
		} else {
			System.out.println(this.n1 / this.n2);
		}
		
	}
	
	public CalculadoraExecucao(Double n1, Double n2, char operador) {
		this.n1 = n1;
		this.n2 = n2;
		this.operador = operador;
		
		// Verifica o operador
		if (operador == '+') {
			// Soma
			this.soma();
		} else if (operador == '-') {
			// Diminui
			this.diminui();
		} else if (operador == '*') {
			// Multiplica
			this.multiplica();
		} else if (operador == '/') {
			// Subtrai
			this.divide();
		}
	}
	
	public Double getN1() {
		return n1;
	}
	public void setN1(Double n1) {
		this.n1 = n1;
	}
	public Double getN2() {
		return n2;
	}
	public void setN2(Double n2) {
		this.n2 = n2;
	}
	public char getOperador() {
		return operador;
	}
	public void setOperador(char operador) {
		this.operador = operador;
	}

	public static void main (String[] args) {
		
		// Instancia a classe de cálculos
		CalculadoraExecucao calc = new CalculadoraExecucao(1.0, 0.0, '/');
		
	}

}

6 Respostas

mauricionarcizo

cara não entendi exatamente qual é a sua duvida…
dei uma olhada rapida no código e nao vi nenhum erro, acho que para começo está bom…
Voce quer é saber como utilizar a classe Scanner?

Scanner ler = new Scanner(System.in);
n1= ler.nextDouble();
S

Opa, mauricionarcizo!

Não, eu sei usar o Scanner, tranquilo...
Minha dúvida era se a lógica do meu código estava coerente com o que o exercício está pedindo e, receber os valores para a operação através do teclado e imprimir o resultado.
Acho que o que eu tentei dizer de uma forma meio torta é: como eu pego os valores 1 + 1 e imprimo o resultado do jeito que está meu código?
Enfim... obrigado pela resposta.

Eu consegui apurar melhor minha lógica e terminar o exercício.
Irei postar aqui, para futuros novatos como eu possam se basear.

import java.util.Scanner;
/**
 * Exercício 08
 * Escreva uma classe em Java que simule uma calculadora bem simples.
 * Essa classe deve ter como atributos duas variáveis double e um char.
 * Deve possuir um construtor que recebe como parâmetro dois números e um caracter, correspondente a uma das operações básicas (+, -, *, /).
 * Deve ter um método para calcular a operação desejada e um para imprimir o resultado. O programa deve considerar divisões por zero como sendo erros,
 * e imprimir uma mensagem adequada. 
 */

public class CalculadoraExecucao {

	private Double n1;
	private Double n2;
	private char operador;
	
	// Método para somar
	public void soma() {
		System.out.println(this.n1 + this.n2);
	}
	
	// Método para diminuir
	public void diminui() {
		System.out.println(this.n1 - this.n2);
	}
	
	// Método para multiplicar
	public void multiplica() {
		System.out.println(this.n1 * this.n2);
	}
	
	// Método para dividir
	public void divide() {
		if (this.n2 == 0) {
			System.out.println("Impossível dividir por 0.\nEncerrando programa de cálculos.");
			System.exit(0);
		} else {
			System.out.println(this.n1 / this.n2);
		}
		
	}
	
	public CalculadoraExecucao(Double n1, Double n2, char operador) {
		this.n1 = n1;
		this.n2 = n2;
		this.operador = operador;
		
		// Verifica o operador
		if (operador == '+') {
			// Soma
			this.soma();
		} else if (operador == '-') {
			// Diminui
			this.diminui();
		} else if (operador == '*') {
			// Multiplica
			this.multiplica();
		} else if (operador == '/') {
			// Subtrai
			this.divide();
		}
	}
	
	public static void main (String[] args) {
		
		// Recebe os números e operador
		
		System.out.println("Digite o 1º número: ");
		Double Numero1 = Double.valueOf(new Scanner(System.in).nextLine());
		System.out.println("Digite o operador: + - * /");
		String Operacao = new Scanner(System.in).nextLine();
		System.out.println("Digite o 2º número:");
		Double Numero2 = Double.valueOf(new Scanner(System.in).nextLine());
	
		CalculadoraExecucao calc = new CalculadoraExecucao(Numero1,Numero2,Operacao.charAt(0));
	}

}

Removi os get's e set's, que por sua vez não seriam usados.

LucasAdri07

Essa calculadora não vai adicionando, por exemplo, 3 + 3 + 3 sem clicar no igual certo?

jaboot

Você ATÉ poderia deixar os gets e sets, pra quando for recuperar/inserir valores diretamente nas variáveis.
Mas pelo tamanho do programa, nem precisa. Só deixaria a coisa mais complicada.

Legal, parabéns

S

@LucasAdri07:
Não, é um exercício bem simples, só com operações básicas e dois números.
Mas, com certeza ele irá pedir um exercício de calculadora mais complexo, caso ocorra isso nos próximos dias, eu irei postando minhas dúvidas/soluções aqui também.

@jaboot:
Entendi, mas neste exemplo, realmente eu tinha posto sem entender exatamente pra que eu iria usar.
Obrigado, espero aprender muito com todos vocês aqui no fórum e, também ensinar.

LucasAdri07

scare:
@LucasAdri07:
Não, é um exercício bem simples, só com operações básicas e dois números.
Mas, com certeza ele irá pedir um exercício de calculadora mais complexo, caso ocorra isso nos próximos dias, eu irei postando minhas dúvidas/soluções aqui também.

@jaboot:
Entendi, mas neste exemplo, realmente eu tinha posto sem entender exatamente pra que eu iria usar.
Obrigado, espero aprender muito com todos vocês aqui no fórum e, também ensinar.

Entendo, provavelmente ele peça mesmo. Outro modo de fazer seria utilizando o switch case ^^

Criado 24 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 6
Participantes 4