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.
Calculando o Troco no Java
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:
- 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.
- inicialmente é verificado se o valor pago é suficiente para o pagamento da conta.
- a divisão do troco é realizada em duas partes:
- 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.
- 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
Prof. Omero Francisco Bertol: http://www.pb.utfpr.edu.br/omero/
Aplicações Java: (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
Links Úteis
- Navegação entre telas no Android:
Aprenda neste conteúdo como é feita a navegação entre activities (telas) no Android usando Java. Veremos como efetuar a navegação com e sem passagem de parâmetros. - Como publicar seu app iOS na App Store:
Neste curso você aprenderá a publicar seu aplicativo iOS na App Store, disponibilizando-o para que seus usuários possam fazer download e instalá-lo em seus dispositivos. - Armazenamento de dados no Cordova: Criando uma aplicação de lembretes:
Aprenda a utilizar o IndexedDB em aplicações Cordova para armazenar informações localmente. Para demonstrar esse recurso, neste exemplo criaremos uma aplicação de lembretes. Confira!
Saiba mais sobre Java ;)
- Guias de Linguagem Java:
Neste Guia de Referência você encontrará todo o conteúdo que precisa para começar a programar com a linguagem Java, a sua caixa de ferramentas base para criar aplicações com Java. - Enums no Java:
Aprenda nesse microexemplo como criar e utilizar enums no Java. Confira como esse poderoso recurso permite a definição de um conjunto limitado de valores para uma variável. - Números mágicos: O que são e como corrigir:
Confira o que são números mágicos e como reconhecer a presença dessa má prática de programação em códigos. Veja ainda quais recursos da linguagem Java podem ser utilizados para corrigir esse problema.