【发布时间】:2017-08-13 05:54:12
【问题描述】:
这对某些人来说可能很容易,但当我学习时,我在这里有点困惑,你看:
int mult[]={1,2,3,4,5,6,7,8,9,10};
changeA.get(changeA.size()-1);
for (int i = 0; i < mult.length; i++) {
int fullChange=((changeA.size()-1)*mult[i]);
System.out.println("changeA: "+ (changeA.size()-1) +".");
System.out.println("fullChange: "+fullChange);}
这是我一直在做的代码的一部分,我在这里遇到的问题是在我的 ArrayList 中。我想做的是:
-
从我在这里所做的列表中获取最后一项:
int fullChange=((changeA.size()-1)*mult[i]);
然后将它乘以我也在同一行中做的上面的 Array。
打印它(我会抓取输出来做一些其他的事情,但是由于我在解决这个问题时遇到了问题,所以我无法继续前进)。
当问题明确表示:硬币/纸币数量最少时,问题就来了。所以我的代码必须抓取列表中的最后一项,这是由填充 ArrayList 的上层决定确定的。但是我的代码没有这样做,我的代码所做的是抓取列表中的第二个最新项目并将其相乘,从而给我正确的答案,但不是正确数量的硬币。 这是一个例子
假设你用 5 美元买了一瓶可乐,用 10 美元的钞票支付。因此,变化将是最少数量的硬币/钞票中的 5 美元钞票。如果他们没有 5 美元的钞票,他们会给你 5 美元的 1 美元钞票。以此类推。
这是一个输出: Code output
我还必须说,上面代码的最后两行是为了测试和确认我的观点。提前致谢
编辑: 这是上面代码之后的内容:
if (fullChange==change) {
System.out.println("El cambio es: "+fullChange+" en monedas de: "+changeA.get(changeA.size()-1)+" con un total de: "+mult[i]+" monedas");
break;
}
所以在 mult[i] 中,不是给我 1,而是给我 5(使用上面的例子)
【问题讨论】:
-
我理解您的问题正确吗: 1. 您被要求提供金额,例如72 欧元。 2. 你付了 80。 3. 你拿回 8,但是用最少的硬币?而且您必须编写执行第 3 步的代码?
-
如何获取数组中的最新值并以正确的方式与另一个数组相乘,因为我的代码不是获取最新的而是第二个最新的
-
@rinormaloku 是的,但是如果你看到图片它并没有给我最少数量的硬币,而是第二少的数量
-
我会编辑它,所以也许你会更好地理解我:)
-
我们需要一些限制。例如。我们有什么类型的硬币? (1,2) 可以用美分还是纸币支付 (5, 10)... 最大值是多少?最低限度是多少? 1美元可以付1000吗?