Jump to content
zetaec

Calculadora com Scanner

Recommended Posts

Eu consigo fazer uma calculadora com 2, 3, 4 números, perfeitamente. Mas estou com um desafio de fazer uma que faça com uma quantidade não definida de números.

Aparecerá no console "Digite um número", apos isso aparecerá "Digite uma operação (+ , - , * , / ou fim)". 

Isto dentro de um while.

Vamos supor que a sequência de números e operação seja essa:

1+8+3-2*3/4

Quando, e somente quando, o usuário digitar "fim", o resultado disto será exibido no console.

 

Estou tentando o seguinte:

 

    public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        double num , soma = 0;
        String op = "";
        
        while (!op.equalsIgnoreCase("fim")) {
        
            System.out.print("Digite um número: ");
            num = Double.parseDouble(sc.next());
            System.out.print("Escolha uma operação (+ , - , * , / ou fim): ");
            op = sc.next();
            
            if (op.equals("+")) {
                soma +=num;
            } 
        }
        
        System.out.println(soma);   
    }

 

Estou apenas tentando com a soma, mas sem sucesso, desta forma não funciona como descrevi.

Share this post


Link to post
Share on other sites

Consegui resolver, pra quem tiver a mesma dúvida:

 

public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        double num1, num2 = 0, calcLoop = 0;
        String op = "" , armazenamento = "";
        boolean primeiraVez = true;
        
        System.out.print("Digite um número: ");
        num1 = Double.parseDouble(sc.next());
        System.out.print("Escolha a operação(\"+\" , \"-\", \"*\" , \"/\" ou \"fim\"): ");
        op = sc.next();
        if (op.equals("+")) {
        } else if (op.equals("-")){
        } else if (op.equals("*")) {
        } else if (op.equals("/")) {
        } else if (op.equalsIgnoreCase("fim")) {
        } else {
            System.out.println("Operação inválida!");
            op = "fim";
        }
        
        while (!op.equalsIgnoreCase("fim")) {
            if (primeiraVez) {
                System.out.print("Digite um número: ");
                num2 = Double.parseDouble(sc.next());
            } else {
                System.out.print("Escolha a operação(\"+\" , \"-\", \"*\" , \"/\" ou \"fim\"): ");
                op = sc.next();
                if (op.equals("+")) {
                } else if (op.equals("-")){
                } else if (op.equals("*")) {
                } else if (op.equals("/")) {
                } else if (op.equalsIgnoreCase("fim")) {
                } else {
                    System.out.println("Operação inválida!");
                    op = "fim";
                }
                if (!op.equalsIgnoreCase("fim")) {
                    System.out.print("Digite um número: ");
                    num2 = Double.parseDouble(sc.next());
                }
            }
            
            switch (op) {
                case "+":
                    if (primeiraVez) {
                        armazenamento += num1 + " + " + num2;
                        calcLoop = num1 + num2;
                    } else {
                        armazenamento += " + " + num2;
                        calcLoop += num2;
                    }    
                    primeiraVez = false;
                    break;
                case "-":
                    if (primeiraVez) {
                        armazenamento += num1 + " - " + num2;
                        calcLoop = num1 - num2;
                    } else {
                        armazenamento += " - " + num2;
                        calcLoop -= num2;
                    }    
                    primeiraVez = false;
                    break;
                case "*":
                    if (primeiraVez) {
                        armazenamento += num1 + " * " + num2;
                        calcLoop = num1 * num2;
                    } else {
                        armazenamento +=" * " + num2;
                        calcLoop *= num2;
                    }    
                    primeiraVez = false;
                    break;
                case "/":
                    if (primeiraVez) {
                        armazenamento += num1 + " / " + num2;
                        calcLoop = num1 / num2;
                    } else {
                        armazenamento += " / " + num2;
                        calcLoop /= num2;
                    }   
                    primeiraVez = false;
                    break;   
            }
        }
        
        if (primeiraVez) {
            System.out.println("Resultado = " + num1);
        } else {
            System.out.println("Resultado de \"" + armazenamento  + 
                    "\" é:\n" + calcLoop);
        }
        
    }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By arfal
      Olá eu vim aqui para publicar meu projeto, esse projeto e uma calculadora de m2 e latas de tinta.
      Essa calculadora servira  como uma ajuda aos pintores, é eu queria pedir a opinião sobre o meu aplicativo e sobre meu código
      larg = float(input("Largura da parede=")) alt = float(input("Altura da parede=")) area = larg*alt tin= larg*alt/2 print("a dimensao da sua parede e de {}x{} e a area e {}m2".format(larg,alt,area)) print("Voce precisara de {}L de tinta".format(tin)) print(" ") print(input("Obrigado por usar")) arquivo executável:
      M2CALC (mediafire.com)
       
       
      Esse projeto usa a base de 2L de tinta para fazer o calculo
      gostaria de receber sua opinião
       
      obrigado por ler
    • By IgorWeldt
      Bom dia, galera.
       
      Essa é a minha primeira postagem 
       
      Seguinte, estou desenvolvendo um website simples de compra, onde o usuário fará o pagamento pela API do PagSeguro, o problema é que não estou conseguindo usar a calculadora de frete do Correios.
       
      Encontrei diversos códios prontos pela internet, porém, nenhum funciona.
       
      Minha página fica carregando e não sai disso.
       
      Falta basicamente isso para finalizar o projeto, alguém pode me dar uma luz?
       
      <?php $parametros = array(); // Código e senha da empresa, se você tiver contrato com os correios, se não tiver deixe vazio. $parametros['nCdEmpresa'] = ''; $parametros['sDsSenha'] = ''; // CEP de origem e destino. Esse parametro precisa ser numérico, sem "-" (hífen) espaços ou algo diferente de um número. $parametros['sCepOrigem'] = '81810110'; $parametros['sCepDestino'] = '80050530'; // O peso do produto deverá ser enviado em quilogramas, leve em consideração que isso deverá incluir o peso da embalagem. $parametros['nVlPeso'] = '1'; // O formato tem apenas duas opções: 1 para caixa / pacote e 2 para rolo/prisma. $parametros['nCdFormato'] = '1'; // O comprimento, altura, largura e diametro deverá ser informado em centímetros e somente números $parametros['nVlComprimento'] = '16'; $parametros['nVlAltura'] = '5'; $parametros['nVlLargura'] = '15'; $parametros['nVlDiametro'] = '0'; // Aqui você informa se quer que a encomenda deva ser entregue somente para uma determinada pessoa após confirmação por RG. Use "s" e "n". $parametros['sCdMaoPropria'] = 'n'; // O valor declarado serve para o caso de sua encomenda extraviar, então você poderá recuperar o valor dela. Vale lembrar que o valor da encomenda interfere no valor do frete. Se não quiser declarar pode passar 0 (zero). $parametros['nVlValorDeclarado'] = '200'; // Se você quer ser avisado sobre a entrega da encomenda. Para não avisar use "n", para avisar use "s". $parametros['sCdAvisoRecebimento'] = 'n'; // Formato no qual a consulta será retornada, podendo ser: Popup – mostra uma janela pop-up | URL – envia os dados via post para a URL informada | XML – Retorna a resposta em XML $parametros['StrRetorno'] = 'xml'; // Código do Serviço, pode ser apenas um ou mais. Para mais de um apenas separe por virgula. $parametros['nCdServico'] = '40010,41106'; $parametros = http_build_query($parametros); $url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx'; $curl = curl_init($url.'?'.$parametros); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $dados = curl_exec($curl); $dados = simplexml_load_string($dados); ?> <html> <head> <title>Frete Correios Testes</title> </head> <body> <h1>Calculadora de frete dos Correios</h1> <?php foreach($dados->cServico as $linhas) { if($linhas->Erro == 0) { echo $linhas->Codigo.'</br>'; echo $linhas->Valor .'</br>'; echo $linhas->PrazoEntrega.' Dias </br>'; }else { echo $linhas->MsgErro; } echo '<hr>'; } ?> </body> </html>  
      Obrigado à todos!
    • By do_morro
      Bom dia a todos.
       
      Estou integrando uma calculadora de juros em um site de um cliente mas a calculadora funciona fora do site, mas não funciona quando o script é colocado dentro do código HTML.
       
      A calculadora é essa: https://www.querocreditopessoal.com.br/teste
       
      E o site já com o código dentro é: https://www.querocreditopessoal.com.br/simulador.html
       
      Alguém pode me dar uma luz?
       
      Grato
       
      Paulo
       
       
    • By fabionps
      Pessoal meu professor da faculdade passou trabalho para fazer um programa pra fazer uma calculadora de produto e divisão no python. A pessoa escolhe o que ela vai fazer e depois escolher dois números inteiros.
      OBS.: Não pode usar nenhum comando de laço e só pode usar os operadores aritméticos  +  e/ou  -  
      Não pode usar  *  nem  / 
    • By ChildCrazy
      Boa Tarde, estou iniciando no PHP  e criei um programa que é uma Calculadora Avançada. O intuito dela é calcular em todos operadores e mostrar uma lista de calculos anteriores
       
      Exige conexão com o Banco de Dados.
       
      1° versão da Calculadora, design não muito legal, com o tempo adiciono mais coisas e corrijo uns Bugs.
      Espero que gostem, apliquei todos conceitos que aprendi até agora!
       
      Link Download: https://goo.gl/EUAAu9
      Scanner VirusTotal: https://goo.gl/VwMHjM
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.