2017-08-13 100 views
-2

这可能是容易一些,但作为我学习我有点困惑在这里,你会看到:循环定位和乘以

   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 [1]);

  2. 然后由上部阵列其中我也做在同一行相乘。

  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(使用上面的例子)

+0

难道我理解你的问题的权利: 1.你是问量例如72欧元。 2.您支付80 3.您找回8,但在硬币的量最少? 你必须编写执行第3步的代码吗? – rinormaloku

+0

如何抓住数组中的最新值,并以正确的方式在其他阵列乘它,因为我的代码不获取最新的,但第二个最新 – sarquamon

+0

@rinormaloku肯定的,但如果你看到的画面一点也没有”牛逼给我硬币的量最少,但第二次量最少 – sarquamon

回答

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

     } 
    } 

有了可能你的代码变化最小。