钱数整兑零程序,谢谢关注.

「已注销」 2008-03-22 10:01:54
题目要求:
1,编写一个整钱兑零程序,该程序能够将用double类型表达的钱数兑换成相应的硬币,要求精确到分。(硬币的面值有1元、5角、1角、5分、2分、1分,如果输入:12.53,结果应该为:(1元)12,(5角)1,(1角)0,(2分)1,(1分)1 .

import javax.swing.*; 
public class MoneyChange
{
public static void main(String[] args)
{
int a,b,c;
String amountString=JOptionPane.showInputDialog(null,"请输入钱数","整钱兑零",JOptionPane.QUESTION_MESSAGE);
double amount=Double.parseDouble(amountString);
a=(int)amount;
System.out.println("(1元)"+a);
b=(int)(((amount-a)*10)/1);
c=(int)((amount-a-b*0.1)*100);
if(b<5)
System.out.println("(1角)"+b);
else if(b==5)
System.out.println("(5角)1");
else
{
System.out.println("(5角)1");
System.out.println("(1角)"+(b-5));
}
if(c<2&&c>0)
System.out.println("(1分)1");
else if(c==2)
{
System.out.println("(2分)1");
}
else
{
System.out.println("(2分)"+(c/2));
System.out.println("(1分)"+(c%2));
}

}
}

问题是:当我输入18.88时,
结果是:
(1元)18
(5角)1
(1角)3
(2分)3
(1分)1
不符合要求,改了半天,仍不见效,本人是初学者,请各位前辈帮助.谢谢.
...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kanebluba 2008-03-22
  • 打赏
  • 举报
回复
前面竟然损失精度了,用下面的吧
  String s="123.65";
double money=Double.parseDouble(s);
money=money*100;
int yuan=(int)money/100;
System.out.print(yuan+"个元 ");
money=money-yuan*100;
int fiveJiao=(int)money/50;
System.out.print(fiveJiao+"个5角 ");
money=money-fiveJiao*50;
int oneJiao=(int)money/10;
money=money-oneJiao*10;
System.out.print(oneJiao+"个1角 ");
int fiveFen=(int)money/5;
money=money-fiveFen*5;
System.out.print(fiveFen+"个5分 ");
int twoFen=(int)money/2;
money=money-twoFen*2;
System.out.print(twoFen+"个2分 ");
int oneFen=(int)money/1;

System.out.print(oneFen+"个1分 ");
starlizhi 2008-03-22
  • 打赏
  • 举报
回复
import javax.swing.*; 
public class MoneyChange {
public static void main(String[] args) {
double a,b,c,d,e;
String amountString=JOptionPane.showInputDialog(null,"请输入钱数","整钱兑零",JOptionPane.QUESTION_MESSAGE);
double amount=Double.parseDouble(amountString);
a=(int)amount;
b=(int)((amount-a)*2);
c=(int)((amount-a-b/2)*10);
d=(int)((amount-a-b/2-c/10)*50);
e=Math.rint(((amount-a-b/2-c/10-d/50)*100));
System.out.println("(1元)"+a);
System.out.println("(5角)"+b+" "+((amount-a)*2));
System.out.println("(1角)"+c+" "+(amount-a-b/2));
System.out.println("(2分)"+d);
System.out.println("(1分)"+e);
}
}
starlizhi 2008-03-22
  • 打赏
  • 举报
回复
import javax.swing.*;
public class MoneyChange {
public static void main(String[] args) {
double a,b,c,d,e;
String amountString=JOptionPane.showInputDialog(null,"请输入钱数","整钱兑零",JOptionPane.QUESTION_MESSAGE);
double amount=Double.parseDouble(amountString);
a=(int)amount;
b=(int)((amount-a)*2);
c=(int)((amount-a-b/2)*10);
d=(int)((amount-a-b/2-c/10)*50);
e=Math.rint(((amount-a-b/2-c/10-d/50)*100));
System.out.println("(1元)"+a);
System.out.println("(5角)"+b+" "+((amount-a)*2));
System.out.println("(1角)"+c+" "+(amount-a-b/2));
System.out.println("(2分)"+d);
System.out.println("(1分)"+e);
}
}
ai7090 2008-03-22
  • 打赏
  • 举报
回复
楼上的可以么?
如果 s=18.88
同样的问题
kanebluba 2008-03-22
  • 打赏
  • 举报
回复
忘记看你的2分了,竟然有2分....
    String s="180.27";
double money=Double.parseDouble(s);
int yuan=(int)money/1;
System.out.print(yuan+" 个元 ");
money=(money-yuan)*10;
int fiveJiao=(int)money/5;
System.out.print(fiveJiao+" 个5角 ");


money=money-(fiveJiao*5);
int oneJiao=(int)money/1;
System.out.print(oneJiao+" 个1角 ");

money=money-(oneJiao*1);
money=money*10;
int fiveFeng=(int)money/5;
money=money-5*fiveFeng;
System.out.println(fiveFeng+" 个5分 ");
int twoFeng=(int)money/2;
money=money-2*twoFeng;
System.out.print(twoFeng+" 个2分 ");
int oneFeng=(int)money/2;
System.out.println(oneFeng+" 个1分 ");
kanebluba 2008-03-22
  • 打赏
  • 举报
回复
 String s="180.75";
double money=Double.parseDouble(s);
int yuan=(int)money/1;
System.out.print(yuan+" 个元 ");
money=(money-yuan)*10;
int fiveJiao=(int)money/5;
System.out.print(fiveJiao+" 个5角 ");


money=money-(fiveJiao*5);
int oneJiao=(int)money/1;
System.out.print(oneJiao+" 个1角 ");

money=money-(oneJiao*1);
money=money*10;
int fiveFeng=(int)money/5;
money=money-5*fiveFeng;
System.out.println(fiveFeng+" 个5分 ");
int oneFeng=(int)money/1;
System.out.println(oneFeng+" 个1分 ");
ai7090 2008-03-22
  • 打赏
  • 举报
回复
这个是float,double的问题,
参考一下别人写的这个
http://blog.csdn.net/tomison/archive/2007/06/30/1672961.aspx

你的程序好像没有对5分钱的情况进行处理!~~

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧