메뉴에서 표시된 음식 항목으로 구성된 음식 주문을 만드는 프로그램을 작성하려고합니다. 각 항목이 선택되고 특정 수량이 지정됩니다. JTextField에서 선택한 항목을 표시하려고하지만 올바르게 작동하지 않습니다. 내가 우연히하고 알아낼 수없는 몇 가지 문제가 있습니다JOptionPane이 ArrayList의 모든 항목을 표시하지 않습니다.
,
JOptionPane에 내가 델리의 ArrayList에 추가 된 모든 항목을 표시하기로되어 있지만 그것은 단지 표시 첫 번째는 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;
}
}
어떤 도움이나 비판은