我是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
}
您可以迭代每个项目,如果当前项目的价格低于之前的较低价格,则可以保存对当前项目的引用
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。我该怎么办?