2016-07-04 192 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