2017-08-13 98 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; 
      } 

     } 
    } 

有了可能你的代碼變化最小。