2016-07-04 215 views
0

我是新來的編碼,因此懷疑。 主要目標是獲得項目的最低價格(包括折扣)。 以下代碼正常工作,但只顯示最低價格忽略折扣。 如何計算折扣?Java折扣計算

回答

0

你的getLeastPriceItem函數有一點邏輯錯誤。

問題#1:
for(int i=1;i<item.length;i++)

第一索引應該是0而不是1,否則你沒有處理的第一項。

問題2:
if (item[i].getItemPrice() < min)

你不包括折扣價進行比較。

假設折扣是整數,而不是百分比則代碼應該像double afterDiscount = item[i].getItemPrice() - item[i].getItemDiscount();

問題3:
public static double getLeastPriceItem

與其說是一個問題,但我會建議返回改爲實體Item

所以這裏是我提出的解決方案;

public static void main(String[] args) { 

     Item[] item= new Item[5]; 
     item[0] = new Item(1, "a", 100.0, 20.0); 
     item[1] = new Item(2, "b", 80.0, 30.0); 
     item[2] = new Item(3, "c", 300.0, 40.0); 
     item[3] = new Item(4, "d", 400.0, 390.0); 
     item[4] = new Item(5, "e", 500.0, 60.0); 

     Item cheapest = getLeastPriceItem(item); 
     System.out.println("Least item price: "+ cheapest.getItemPrice() + " with discount of: " + cheapest.getItemDiscount()); 
    } 

    public static Item getLeastPriceItem(Item[] item) 
    { 
     double currMin = Double.MAX_VALUE; 
     Item cheapestItem = null; 
     for(int i=0;i<item.length;i++) 
     { 
      double afterDiscount = item[i].getItemPrice() - item[i].getItemDiscount(); 
      if(afterDiscount < currMin) 
      { 
       currMin = afterDiscount; 
       cheapestItem = item[i]; 
      } 
     } 
     return cheapestItem; 
    } 

輸出:

最商品價格:400.0用優惠:390.0

這裏的算法是跟蹤當前最廉價的商品的價值,也是最便宜的項目目標。循環訪問數組中的所有項目並相應地進行比較,然後返回最便宜的項目對象。

返回項目是一個更優雅的解決方案,因爲一旦您找出最便宜的對象的實例,您可以根據其屬性進行/打印任何您喜歡的對象。例如。發現它有多少折扣價值等。

+0

使用您提出的解決方案來運行代碼,但獲得低於輸出。 '0 CURR至少項目的價格1.7976931348623157E308 CURR至少項目的價格80.0 CURR至少項目的價格70.0 CURR至少項目的價格60.0 CURR至少項目的價格50.0 最項目的價格100.0' – macboyme95

+0

@ macboyme95 - 爲我在那裏得到的調試聲明道歉。我已經更新瞭解決方案,將其刪除,並使這些產品的定價更加明顯,而不是對所有產品使用100.0值。還包括樣本輸出到解決方案。 –

+0

是的。它現在正確運行。最後一個查詢。如果貼現率是百分比呢? – macboyme95

0

在您比較min的價格的代碼塊中,您可以僅考慮每個項目的折扣。

嘗試更換:

if (item[i].getItemPrice() < min) 

用,

if (item[i].getItemPrice() * item[i].getItemDiscount() < min) 

希望幫助!我已經使用Java已經有一段時間了:)

+0

它仍然無法正常工作。仍然忽略折扣價格。 – macboyme95