Java如何编写接收Item数组、返回折扣后价格最低商品的方法
实现步骤说明
首先修正你现有代码的两处可正常编译的小问题:
- Item类构造方法中属性赋值拼写错误:你定义的属性名为
itemName,但构造方法里写的是this.ItemName = itemName,大小写不匹配会触发编译报错,需要修正为小写开头 - main方法中
Item = new Item[2]末尾缺少分号,同时数组变量名和类名重名不符合命名规范,建议修改为items
核心方法实现思路
你需要的getItemPrice方法逻辑很简单:遍历数组内所有Item对象,计算各自折扣后价格,迭代记录当前价格最低的对象即可,同时补充空数组判断避免空指针异常。
完整可运行代码
1. 修正后的Item类
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; } // 封装折扣后价格计算逻辑,符合面向对象封装规范 public double getFinalPrice() { return itemPrice - itemDiscount; } // Getters and setters follow after this public int getItemId() { return ItemId; } public String getItemName() { return itemName; } public double getItemPrice() { return itemPrice; } public double getItemDiscount() { return itemDiscount; } }
2. 包含目标方法和main方法的测试类
public class ItemTest { // 你需要的getItemPrice方法,因为要在静态main中调用,所以声明为static public static Item getItemPrice(Item[] items) { // 边界判断:空数组直接返回null避免报错 if (items == null || items.length == 0) { return null; } // 先假设第一个元素为价格最低的商品 Item minPriceItem = items[0]; // 遍历剩余元素逐一比较 for (int i = 1; i < items.length; i++) { Item currentItem = items[i]; if (currentItem.getFinalPrice() < minPriceItem.getFinalPrice()) { minPriceItem = currentItem; } } return minPriceItem; } public static void main(String[] args) { Item[] items; items = new Item[2]; items[0] = new Item(1, "Item One", 5, 2); items[1] = new Item(2, "Item Two", 10, 5); // 调用方法测试 Item cheapestItem = getItemPrice(items); System.out.println("价格最低的商品ID:" + cheapestItem.getItemId()); System.out.println("商品名称:" + cheapestItem.getItemName()); System.out.println("折扣后价格:" + cheapestItem.getFinalPrice()); } }
运行结果
价格最低的商品ID:1
商品名称:Item One
折扣后价格:3.0
和你预期的返回Item 1的结果完全一致。
内容的提问来源于stack exchange,提问作者user17387633
相关产品推荐
相关产品推荐

