-1

如何将一定数量的钱兑换成纸币和硬币?假设输入是 1234,26,我们有 1000、500、200、100、50 的纸币和 20、10、1 和 0.5 的硬币?因此,如果输入大于 .25 且小于 0.75,则应四舍五入为 1x 0.5,如果其介于 0.75 和 1.00 之间,则应四舍五入为 1x 1,如果小于 0.25,则应四舍五入为空?这个确切的程序所需的输出看起来像这样:

1x: 1000
1x:  200
1x:   20
1x:   10
4x:    1
1x:    0.5

如果不是 0.5 硬币,我想我可以使用 int 和 % 来做到这一点,但到目前为止我几乎一无所知(认为我必须使用数组,但我不确定如何使用)并且没有想法如何开始。我也是初学者,如果您在回答和解释时也能记住这一点!任何提示/解决方案?提前致谢!

像这样?:

   System.out.println((input/1000) + " thousand " + ((input/500)%2) + " fivehundred " + (input/200%2.5) + " two hundred " + (input/100%2) + " hundred " + (input/50%2) + " fifty " + (input/20%2.5) + " twenty " + (input/10%2) + " ten " + input/1%10 + " one " );

仍然不确定如何处理 0.5,因为我必须使用 int,只输入因为如果我使用 double 我完全错了,我还必须对 0.5 硬币使用 if 语句..

4

1 回答 1

1

我相信这是解决此类问题的标准方法。

double input = 1234.26;

int thousands = input/1000;
input = input - 1000*thousands;  //So now it would 234,26
int fivehundreds = input/500;
input = input - 500*fivehundreds;
etc...

对,但你不能从双精度转换为整数(即​​千位是整数,但输入是双精度,所以 input/1000 是双精度)。所以你有几个选择:

  1. 使千、五百等……翻倍。不过,这有点难看,它们不可能有任何十进制值
  2. 选角对你来说意味着什么?例如,(int)int thousands = input/1000;将工作。您可以阅读“强制转换”,但基本上我只是告诉 Java 将该数字视为 int,而不是 double
  3. 将输入保持为 int,并将其向下舍入。然后在最后检查它是否有十进制值(input % 1 > 0),如果有,你需要半美元。
于 2014-08-18T21:48:24.780 回答