Galera meu professor pediu pra eu fazer um programa que:
O Caixa vai entrar com o Valor da Compra e o valor recebido para pagamento
então eu vo ter que mostrar pra ele o troco e quais as moedas o caixa devera devolver. (o caixa só trabalha com moeda)
Eu fiz com o While.
Porém o professor disse que quer isso com Switch…Case
eu achei uma “solução” porém o Troco é um valor double
e o switch não sei aceita double.
Por exemplo:
Se o troco é de 4 reais de 37 centavos
o Programa tem qe mostrar
1 Real: 4
0,5 centavos: 0
0,25 centavos: 1
0,10 centavos: 1
0,05 centavos:0
0,01 centavos: 2
Ajuda com problema usando switch!
5 Respostas
Detalhe: 50 centávos é muito diferente de 0,5 (meio) centavo, cara. (50cents/100).
Pensando assim, você resolve este problema…
R$ 0,01 = 1 centavo
R$ 1 = 100 centavos…
Veja se te dá uma luz:
Double troco = 1.36D;
DecimalFormat decimalFormatter = new DecimalFormat("0.00");
int virgula = troco.toString().indexOf("."); // que na verdade é um ponto
String parteInteira = decimalFormatter.format(troco).substring(0, c);
String parteFracionaria = decimalFormatter.format(troco).substring(c+1, c+3);
System.out.println("Parte inteira: " + parteInteira);
System.out.println("Parte fracionaria: " + parteFracionaria);
// para centavos
switch ( Integer.parseInt(parteFracionaria) ){
// case ..
// case ..
case 26:System.out.print("Centavos: " + parteFracionaria);
// ...
// 99 ???
}
O problema é que o case poderia ser otimizado, agora como?
Colocar
case 1:
case 2:
...
case 99:
Muito longo não? :?:
L
Para pegar a parte fracionária de um double, com duas casas, você pode fazer:
double d= 3.53d;
int i = (d * 100)%100;
i agora tem o valor 53.
Para ficar genérico, você pode pensar em:public static int fracao(double x, int casas) {
int multi = (int) Math.pow(10, casas);
return (int) (x * multi) % multi;
}
double troco= 3.67d;
int centavosTroco = (int) (troco*100);
int moedasDeUmReal = (int) (centavosTroco/100);
int moedasDeCinquenta = (centavosTroco%100)/50;
int moedasDeVinteCinco = ((centavosTroco%100)%50)/25;
int moedasDeDez = (((centavosTroco%100)%50)%25)/10;
int moedasDeCinco = ((((centavosTroco%100)%50)%25)%10)/5;
int moedasDeUm = ((((centavosTroco%100)%50)%25)%10)%5;
System.out.println(moedasDeUmReal + " x R$ 1,00; " +
moedasDeCinquenta + " x R$ 0,50; " +
moedasDeVinteCinco + " x R$ 0,25; "+
moedasDeDez + " x R$ 0,10; "+
moedasDeCinco + " x R$ 0,05; "+
moedasDeUm + " x R$ 0,01");
Daria:
3 x R$ 1,00; 1 x R$ 0,50; 0 x R$ 0,25; 1 x R$ 0,10; 1 x R$ 0,05; 2 x R$ 0,01
Vlw pessoal.
Fiquei sem entregar. riaria
mas meu professor passou um fluxograma disso onde tem que declarar todas as variaveis
e fazer com dois while e um switch.
Acho que na hora ele se expressou mal e falou que era SÓ com switch.
mas vlw pessoal.
ADM…Pode fechar 
Criado 18 de maio de 2011
Ultima resposta 23 de mai. de 2011
Respostas 5
Participantes 5
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo