DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Calculando o Troco em uma Aplicação Java

Veja neste artigo uma aplicação Java para calcular o troco no pagamento de uma conta. Como resultado será apresentado também o valor inteiro e o valor fracionário do troco dividido em notas e moedas, respectivamente.

Caros Amigos,

Pretendo demonstrar neste artigo uma aplicação Java para calcular o troco no pagamento de uma conta. Como resultado será apresentado também o valor inteiro do troco dividido em notas de R$ 100,00 - R$ 50,00 - R$ 20,00 - R$ 10,00 - R$ 5,00 - R$ 2,00 e R$ 1,00, respectivamente. E ainda, a parte fracionária do troco será dividida em moedas de R$ 0,50 - R$ 0,25 - R$ 0,10 - R$ 0,05 e R$ 0,01, respectivamente.

Implementar a classe principal Java Troco como demonstrado a seguir:
import java.text.DecimalFormat;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Troco {

  public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);

    double conta, pago;

    try {
      System.out.printf("Informe o Valor da Conta: ");
      conta = ler.nextDouble();

      System.out.printf("Informe o Valor Pago....: ");
      pago = ler.nextDouble();

      System.out.printf("%s", calculaTroco(conta, pago));
    }
    catch (InputMismatchException e) {
      System.err.printf("\nErro: dados informados inválidos !!!\n");
    }
  }
 
  public static String calculaTroco(double conta, double pago) {
    DecimalFormat formatador = new DecimalFormat("###,##0.00");
    if (pago < conta)
       return("\nPagamento insuficiente, faltam R$ " +
         formatador.format(conta - pago) + "\n");
   else {
      int nota[] = {100, 50, 20, 10, 5, 2, 1};
      int centavos[] = {50, 25, 10, 5, 1};

      String result;
      double troco;
      int i, vlr, ct;

      troco = pago - conta;
      result = "\nTroco = R$ " + formatador.format(troco) + "\n\n";

// definindo as notas do troco (parte inteira)
      vlr = (int)troco;
      i = 0;
      while (vlr != 0) {
        ct = vlr / nota[i]; // calculando a qtde de notas
        if (ct != 0) {
           result = result + (ct + " nota(s) de R$ " + nota[i] + "\n");
           vlr = vlr % nota[i]; // sobra
        }
        i = i + 1; // próxima nota
      }

      result = result + "\n";

// definindo os centavos do troco (parte fracionária)
      vlr = (int)Math.round((troco - (int)troco) * 100);
      i = 0;
      while (vlr != 0) {
        ct = vlr / centavos[i]; // calculando a qtde de moedas
        if (ct != 0) {
           result = result + (ct + " moeda(s) de " + centavos[i] +
             " centavo(s)\n");
           vlr = vlr % centavos[i]; // sobra
        }
        i = i + 1; // próximo centavo
      }

      return(result);
    }
  }

}


Entendendo o algoritmo implementado no método calculaTroco:
a) os vetores "nota" e "centavos" representam os valores das notas e centavos, respectivamente, usados nos cálculos das quantidades individuais na divisão do troco.
b) inicialmente é verificado se o valor pago é suficiente para o pagamento da conta.
c) a divisão do troco é realizada em duas partes:
c.1) dividindo a parte inteira do troco da maior nota (R$ 100,00) para a menor nota (R$ 1,00) até zerar o valor inteiro do troco. O operador / é usado para calcular a quantidade de notas já o operador % foi utilizado na expressão que calcula a sobra.
c.2) dividindo a parte fracionária do troco da maior moeda (R$ 0,50) para a menor moeda (R$ 0,01) até zerar o valor fracionário do troco. Novamente os operadores / e % são utilizados nas expressões que fazem a divisão da parte fracionária do troco em moedas.

Ao executar a aplicação deve-se informar o valor da conta e o valor pago e o seguinte resultado poderá ser exibido:



Veja também:
1) Separando a Parte Inteira e a Parte Fracionária de Valores do Tipo Real
2) Calculando o Troco em uma Aplicação Delphi

Obrigado e um abraço.


Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Aplicações Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Omero Francisco Bertol

Técnico Mecânico pelo CEFET, Curitiba/PR. Tecnólogo em Processamento de Dados pela UEM, Maringá/PR. Especialista em Informática pela Universidade Federal do Paraná. Mestre em Informática Aplicada pelo Programa de Pós Graduação em Informática Aplicada da PUC, Curitiba/PR. Professor de Ensino Superior...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03