当前位置: 首页 > 知识库问答 >
问题:

如何编写一个以项目数组为输入并以最少的价格返回项目的方法(也考虑折扣)?

常波鸿
2023-03-14

我是Java新手,我试图在这个类中声明另一个方法,名为getItemPrice,它将项目数组作为输入,并以最低价格返回项目(同时考虑折扣)。

到目前为止,我已经在main方法中声明了一个包含2个项目对象的数组。

这是我的主要方法:

public static void main(String[] args) {

Item[] Item;

Item = new Item[2]

Item[0] = new Item(1, "Item One", 5, 2);
Item[1] = new Item(2, "Item Two", 10, 5);
}

正如您在上面看到的,每个项目数组都有一个id、名称、价格和折扣。

现在,使用这些项目数组,我试图在这个类中声明另一个名为getItemPrice的方法,它将项目数组作为输入并返回价格最低的项目(也考虑折扣)。

例如,该方法将同时接受项目1和项目2,但将返回项目1,因为5减去2得到3,这比项目2小,项目2是10减去5,得到5。

因此,项目1将被退回,因为在添加折扣时它的价格最低。

我真的不知道如何做到这一点,所以任何帮助都将不胜感激。

类实现:

public class Item {

int ItemId;
String itemName;
double itemPrice;
double itemDiscount;

public Item(int ItemId, String itemName, double itemPrice, double itemDiscount) {

super();
this.ItemId = itemId;
this.ItemName = itemName;
this.itemPrice = itemPrice;
this.itemDiscount = itemDiscount;
}

// Getters and setters follow after this
}

共有1个答案

戎高爽
2023-03-14

您可以迭代每个项目,如果当前项目的价格低于之前的较低价格,则可以保存对当前项目的引用

static Item getItemPrice(Item[] items) {
    double lowerPrice = Double.MAX_VALUE;
    Item lower = null;
    for (Item item : items) {
        double finalPrice = item.itemPrice - item.itemDiscount;
        if (finalPrice < lowerPrice) {
            lowerPrice = finalPrice;
            lower = item;
        }
    }
    return lower;
}

public static void main(String[] args) {
    Item[] items = new Item[]{
            new Item(1, "Item One", 5, 2),
            new Item(2, "Item Two", 10, 5)};
    System.out.println(getItemPrice(items)); // Item{id=1, name='Item One', price=5, discount=2}
}

使用Stream的高级级别

static Item getItemPrice(Item[] items) {
    return Arrays.stream(items)
            .min(Comparator.comparingDouble(item -> item.itemPrice - item.itemDiscount))
            .orElse(null);
}

注意,对于变量名,约定是小写的,并且不以类名作为前缀,一个好的类应该是

class Item {
    int id;
    String name;
    double price;
    double discount;

    public Item(int id, String name, double price, double discount) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.discount = discount;
    }
}

 类似资料:
  • 问题内容: 我将收到来自Obj-C的JSON编码字符串,并且正在解码一个伪字符串(目前),如下面的代码。我的输出结果是在每个项目前加上字符’u’: JSON如何添加此Unicode字符?删除它的最佳方法是什么? 问题答案: u-前缀仅表示您具有Unicode字符串。当您真正使用字符串时,它不会出现在您的数据中。不要被打印输出扔掉。 例如,尝试以下操作: 你不会看到你。

  • 我有一个具有以下模式的数据帧: 我想使用一个UDF,它将user_loans_arr和new_loan作为输入,并将new_loan结构添加到现有的user_loans_arr中。然后,从user_loans_arr中删除loan_date超过12个月的所有元素。 提前谢谢。

  • 问题内容: 我想编写Sql Query,以按百分比增加商品价格。 场景是:- 在表中,我有3个栏目:ID,项目名称,价格 问题答案: 如果您要更新表,则可以进行条件更新。 如果您希望在选择时不对表进行任何更新就显示增加的价格,则可以执行以下操作。

  • 我有一个4类的代码,甲板,卡,玩家和测试。 我的想法是创建一个21点游戏,玩家有你的“手”与甲板上提供的卡。我的代码工作正常,但是我只想要一个方法返回两个不同的数组。 我的代码简历: 牌:一张牌(价值,花色) 套牌:创建一个包含 52 张牌的牌阵列。一个类的方法提供Cards()来获取玩家的卡。 玩家:一类有牌阵列的“手牌” 问题在哪里? 看“Deck”类,我使用了2个方法,provideCard

  • 在下面的代码中,我试图实现getItemByManufacturer方法,该方法应该返回我们测试的制造商的项目数组。我曾尝试获取特定制造商的项目数组,但哈希代码正在打印。为什么呢?我也重写了toString方法。任何帮助都将不胜感激。

  • 我有两个数组: 我需要编写一个方法,该方法返回array1中元素的数组,该数组在字符串项中包含array2中的任何项。因此该方法应该返回: 我尝试了,但它只返回array1。我该怎么办?