【问题标题】:Loops positioning and multiplying循环定位和乘法
【发布时间】: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 中。我想做的是:

  1. 从我在这里所做的列表中获取最后一项:

    int fullChange=((changeA.size()-1)*mult[i]);

  2. 然后将它乘以我也在同一行中做的上面的 Array。

  3. 打印它(我会抓取输出来做一些其他的事情,但是由于我在解决这个问题时遇到了问题,所以我无法继续前进)。

当问题明确表示:硬币/纸币数量最少时,问题就来了。所以我的代码必须抓取列表中的最后一项,这是由填充 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吗?

标签: java arrays list loops


【解决方案1】:

如果我理解正确的问题,这应该是解决方案:

    ArrayList<Integer> changeA = new ArrayList<Integer>() {{
        add(5);
        add(10);
        add(20);
        add(50);
        add(100);
    }};

    int change = 10;
    outer: for (int i = changeA.size() - 1; i >= 0 ; i--) {
        for (int j = 1; j <= 10; j++) {
            int fullChange = changeA.get(i) * j;
            System.out.println("changeA: " + changeA.get(i) + ".");
            System.out.println("fullChange: " + fullChange);
            if (fullChange==change) {
                System.out.println("El cambio es: "+fullChange+" en monedas de: "+
                        changeA.get(i)+" con un total de: "+j+" monedas");
                break outer;
            }

        }
    }

对您的代码进行最小的更改。

【讨论】:

  • 大约一年前丢失了很多文件后,我记得我很久以前就问过这个问题,非常感谢你,你的代码甚至帮助我找回了很多我的丢失的代码,非常感谢:3
猜你喜欢
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2019-11-13
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多