Calculadora não retorna para executar uma outra operação com "do while"

3 respostas
J

Ola, pessoal!
Estou criando uma calculadora que, além de fazer a primeira operação solicitada, pergunta para o usuário se ele deseja realizar uma outra operação. Porém, se o usuário desejar realizar uma nova operação além da primeira, o programa finaliza, sem pedir para o usuário voltar a inserir novamente o valor a ser armazenado na primeira variável. Por favor, alguém pode me ajudar?
Segue o código do programa abaixo:

[b]
public class Calculadora {

protected double num1;
protected double num2;
protected int operacao;
protected String continuacao;

public double soma(){
	return num1 + num2;
}

public double subtracao(){
	return num1 - num2;
}

public double multiplicacao(){
	return num1 * num2;
}

public double divisao(){
	return num1 / num2;
}

}
[/b]

Classe que irá executar:
[b]
public class UsaCalculadora extends Calculadora {

public static void main(String[] args) {
	Calculadora c = new Calculadora();
	System.out.println("Entre com o primeiro valor: ");
	c.num1 = new java.util.Scanner(System.in).nextDouble();
	System.out.println("Entre com o segundo valor: ");
	c.num2 = new java.util.Scanner(System.in).nextDouble();
	System.out.println("Escolha a operacao: ");
	System.out.println("1 - soma");
	System.out.println("2 - subtracao");
	System.out.println("3 - multiplicacao");
	System.out.println("4 - divisao");
	c.operacao = new java.util.Scanner(System.in).nextInt();
	
	do 
	{
	if(c.operacao == 1) {
		System.out.println("Resultado: " + c.soma());
	}
	
	else if(c.operacao == 2) {
		System.out.println("Resultado: " + c.subtracao());
	}
	
	else if(c.operacao == 3) {
		System.out.println("Resultado: " + c.multiplicacao());
	}
	
	else if(c.operacao == 4) {
		
		if(c.num2 == 0){
			System.out.println("Não existe divisão por zero!");
		}
		
		System.out.println("Resultado: " + c.divisao());
		
	}
	else{
		
		System.out.println("Operação inválida!");
	}
		System.out.println("Deseja continuar (S/N)? ");
		c.continuacao = new java.util.Scanner(System.in).next();
	}
	while (c.continuacao == "S");
	System.out.println("Operação finalizada!");
}

}
[/b]

Tentei usar o “do while”, mas não deu certo.

Desde já, agradeço!

3 Respostas

remixlara

Primeiro, para que ele repita a solicitação dos números é necessário colocar o código dentro do do{ ... } while();

Para comparar uma String eu recomendo utilizar c.continuacao.equals("S") e se for igual ele irá retornar true e retornará para o inicio da instrução solicitando novamente os números.

Antes de mais nada, nós desenvolvemos uma calculadora pra ser integrada com o Java de forma simples. da uma olhada no blog e deixe comentários =D

Batuque Calculator

Dei uma ajustada pra você. da uma olhada

package br.com.batuquetecnologias.controle;

public class UsaCalculadora extends Calculadora {

	public static void main(String[] args) {
		Calculadora c = new Calculadora();

		do {
			System.out.println("Entre com o primeiro valor: ");
			c.num1 = new java.util.Scanner(System.in).nextDouble();
			System.out.println("Entre com o segundo valor: ");
			c.num2 = new java.util.Scanner(System.in).nextDouble();
			System.out.println("Escolha a operacao: ");
			System.out.println("1 - soma");
			System.out.println("2 - subtracao");
			System.out.println("3 - multiplicacao");
			System.out.println("4 - divisao");
			c.operacao = new java.util.Scanner(System.in).nextInt();

			if (c.operacao == 1) {
				System.out.println("Resultado: " + c.soma());
			}

			else if (c.operacao == 2) {
				System.out.println("Resultado: " + c.subtracao());
			}

			else if (c.operacao == 3) {
				System.out.println("Resultado: " + c.multiplicacao());
			}

			else if (c.operacao == 4) {

				if (c.num2 == 0) {
					System.out.println("Não existe divisão por zero!");
				}

				System.out.println("Resultado: " + c.divisao());

			} else {

				System.out.println("Operação inválida!");
			}
			System.out.println("Deseja continuar (S/N)? ");
			c.continuacao = new java.util.Scanner(System.in).next();
		} while (c.continuacao.equals("S"));
		System.out.println("Operação finalizada!");
	}
}
A

Nem vi que já tinham respondido…

J

Obrigado, funcionou muito bem!

Criado 22 de maio de 2010
Ultima resposta 23 de mai. de 2010
Respostas 3
Participantes 3