【发布时间】:2017-11-09 22:55:34
【问题描述】:
我正在尝试编写一个程序,该程序将创建一个由菜单中显示的食品组成的食品订单。每个项目都被选中并赋予一定的数量。我想显示我在 JTextField 中选择的项目,但它没有正常工作。
我遇到了一些问题,但似乎无法弄清楚,
JOptionPane 应该显示我添加到熟食阵列列表中的所有项目,但它只显示第一个项目,即 Nachos。
我的 getTotalPrice 方法没有正确计算成本,我不完全确定原因。
我希望程序确定一个项目是否已经存在于 Arraylist 中,如果存在则添加到数量中,如果没有,则将新条目添加到 Arraylist 中。但是,它总是添加一个新项目,无论它是否已经存在。
以下是我所有的类文件。
import java.util.ArrayList;
public class Menu {
private final ArrayList<Item> menu;
public Menu() {
menu = new ArrayList<>();
}
public void addItem(Item item) {
menu.add(item);
}
public Item getItem(int itemNo) {
if (menu.size() > itemNo) {
return menu.get(itemNo);
}
return null;
}
@Override
public String toString() {
for (int i = 0; i < menu.size(); i++) {
return String.format("%s: %s \n",i+1, menu.get(i));
}
return null;
}
}
public class Item {
private final String name;
private final double price;
public Item(String name, double price) {
this.name = name;
this.price = price;
}
public double getPrice() {
return price;
}
@Override
public String toString() {
return String.format("Name %s @ Price $%s", name, price);
}
public boolean equals(Item item) {
return item.name.equals(item.name);
}
}
public class ItemQty {
private final Item item;
private final int quantity;
public ItemQty(Item item, int quantity) {
this.item = item;
this.quantity = quantity;
}
public Item getItem() {
return item;
}
public int getQuantity() {
return quantity;
}
@Override
public String toString() {
return String.format("%s - %s\n", quantity, item);
}
public boolean equals(ItemQty itemQty) {
return itemQty.getItem().equals(itemQty.getItem());
}
}
import java.util.ArrayList;
public class Order {
private final ArrayList<ItemQty> order;
public Order() {
order = new ArrayList<>();
}
public void addToOrder(ItemQty itemQty) {
if (order.contains(itemQty)) {
int amount = itemQty.getQuantity();
amount += 1;
}
else
order.add(itemQty);
}
public double getTotalPrice() {
for (int index = 0; index < order.size(); index++) {
double price = order.get(index).getItem().getPrice();
int quantity = order.get(index).getQuantity();
double sum = price * quantity;
return sum;
}
return 0;
}
@Override
public String toString() {
String str = "";
for (int index = 0; index < order.size(); index++) {
str += order.get(index).toString() + "\n\n";
}
return str;
}
}
任何帮助或批评将不胜感激
【问题讨论】:
标签: java joptionpane