题目要求:
   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 
不符合要求,改了半天,仍不见效,本人是初学者,请各位前辈帮助.谢谢.

解决方案 »

  1.   

    这个是float,double的问题,
    参考一下别人写的这个
    http://blog.csdn.net/tomison/archive/2007/06/30/1672961.aspx你的程序好像没有对5分钱的情况进行处理!~~
      

  2.   

     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分  ");
              
      

  3.   

    忘记看你的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分  ");
      

  4.   

    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);
        }
    }
      

  5.   

    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);
        }
    }
      

  6.   

    前面竟然损失精度了,用下面的吧
      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分  ");