【发布时间】:2020-04-07 23:09:33
【问题描述】:
我正在编写一个程序来使用命令设计模式来模拟餐厅菜单系统。我让 Menu 类中的构造函数初始化了一个数组列表。
import java.util.ArrayList;
public class Menu {
public ArrayList<MenuItem> listOfMenuItems;
public Menu() {
listOfMenuItems = new ArrayList<MenuItem>();
}
public void addItemToMenu(String itemName, String itemDescription, double cost) {
MenuItem newMenuItem = new MenuItem(itemName, itemDescription, cost);
listOfMenuItems.add(newMenuItem);
}
public void displayMenu() {
for(MenuItem item : listOfMenuItems) {
System.out.println("NAME: " + item.getItemName() + ", DESCRIPTION: " + item.getItemDescription()
+ ", COST: " + item.getItemCost());
}
}
}
当在我的客户端调用一个新菜单时,它允许我存储项目(就像它是一个数组列表一样),它还允许我实现命令设计模式并将我的所有项目打印出来。但是,我添加了一个 Tab 类,它使用来自 Menu 对象的信息,但它不允许我使用 .get() 从我的数组列表中检索信息。
import java.util.*;
public class testClient {
public static void main(String[] args) {
Menu menu = new Menu();
Tab tab;
System.out.println("MENU:");
menu.addItemToMenu("lobster", "#1234" , 25.99);
menu.addItemToMenu("chicken", "#5687" , 20.99);
menu.addItemToMenu("steak", "#4567" , 21.99);
DisplayMenu dispMenu = new DisplayMenu(menu);
SubmitButton onPressed = new SubmitButton(dispMenu);
onPressed.submit();
System.out.print("\n");
System.out.println("ORDERS:");
Order order = new Order();
order.addNewOrder("#1234");
order.addNewOrder("#5678");
SubmitOrder submitOrder = new SubmitOrder(order);
SubmitButton onSubmitPressed = new SubmitButton(submitOrder);
onSubmitPressed.submit();
tab.constructTab(newMenu.get(0).getItemName(), order.get(0).getOrderItemNumber(), newMenu.get(0).getItemCost());
}
}
tab.constructTab(....) 行,返回如下错误:
testClient.java:31: error: cannot find symbol
tab.constructTab(menu.get(0).getItemName(), order.get(0).getOrderItemNumber(), menu.get(0).getItemCost());
^
symbol: method get(int)
location: variable menu of type Menu
testClient.java:31: error: cannot find symbol
tab.constructTab(menu.get(0).getItemName(), order.get(0).getOrderItemNumber(), menu.get(0).getItemCost());
^
symbol: method get(int)
location: variable order of type Order
testClient.java:31: error: cannot find symbol
tab.constructTab(menu.get(0).getItemName(), order.get(0).getOrderItemNumber(), menu.get(0).getItemCost());
^
symbol: method get(int)
location: variable menu of type Menu
3 errors
当它应该是一个数组列表时,它说菜单是菜单类型?我不明白为什么它允许我添加项目。
如果您需要任何其他代码,请告诉我。
提前谢谢你!
【问题讨论】:
-
menu没有get()方法,字段menu. listOfMenuItems有。 --- “它说菜单应该是数组列表时是菜单类型” 声明Menu menu = new Menu();说menu是Menu类型,那么你为什么认为应该属于ArrayList类型? --- 似乎您将menu(类型Menu)与字段listOfMenuItems(类型ArrayList<MenuItem>)混淆了。