最近刚接触java,应老师要求写了几行,主要目的是输入钱数然后输出每张面额的有几张。
跑了几次试试,发现输入一些数时,不能正确输出张数,如256.33  , 300.33等。不知道哪写错了,大侠们帮忙看看。
还有,自己把这个放到applet里的时候,只能输出一行,而张数要很多行才能输出完,高人们也帮下忙?兄弟刚刚注册,没什么分,在这先谢大家。package moneycounter;
import java.util.*;
class MoneyCoutnter{
     public void count (float n)
    {         int  m=(int)(n*100);
int []a = new int [] {10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
String []str = {"100元的","50元的","20元的","10元的","5元的","2元的","1元的","5角的","2角的","1角的","5分的","2分的","1分的"};
int i=0;
while (i<13)
{
  if(i!=0)
  {  int sum=0;
     sum=(int)((m=m%a[i-1])/a[i]);
     System.out.println(str[i]+"的有"+sum+"张");
     i++;
  }
  else {
      int sum=0;
      sum=(int)(m/a[0]);
      System.out.println("100的有"+sum+"张");
      i++;
  }
}
}
}public class Count {    
    public static void main(String[] args) {
       System.out.println("输入金额");
         Scanner sc = new Scanner(System.in);
    float dol = sc.nextFloat();
    MoneyCoutnter co=new MoneyCoutnter();
    co.count(dol);
    }}

解决方案 »

  1.   

    算法错了嘛!if(i!=0) 
      {  int sum=0; 
        sum=(int)((m=m%a[i-1])/a[i]); //好像有问题    sum=(int)(m/a[i]);//改为这两句
        m=m-sum*a[i];    System.out.println(str[i]+"的有"+sum+"张"); 
        i++; 
      } 
      else { 
          int sum=0; 
          sum=(int)(m/a[0]);     //加上这一句
           m=m-sum*a[0];      System.out.println("100的有"+sum+"张"); 
          i++; 
      } 
      

  2.   

    兄弟愚钝,“ sum=(int)((m=m%a[i-1])/a[i]); //好像有问题 ”这一句实在不知道哪错了,我也不知道怎么改。我开始也用的是m-m*a[i],但老师说要我用取余。