[英]How do I access an ArrayList written in one class from another class?
所以我正在为大学做一个 Java 项目,我必须模拟一家餐馆。 给我带来麻烦的两个班级是 Menu 和 Bill。 我在菜单中为所有可能的开胃菜、主菜、甜点和饮料写了四个 ArrayList。 我需要能够访问 Bill 中的这些 ArrayLists 以生成账单/收据,但我遇到了麻烦。
菜单 class:
import Foods.Desserts;
import Foods.Drinks;
import Foods.Main;
import Foods.Starter;
import java.util.ArrayList;
public class Menu {
/**
* @author Max Huddlestan
*/
//Created Array lists for each course to track the prices
ArrayList<Starter> starters;
ArrayList<Main> mains;
ArrayList<Desserts> desserts;
ArrayList<Drinks> drinks;
//this constructor should make it so each class had each of these array lists
public Menu(){
addStarters();
addMain();
addDesserts();
addDrinks();
}
//using an object of each class i can add a name and a price to the food in its respective course
public void addStarters(){
starters = new ArrayList<Starter>();
starters.add(new Starter("Soup", 8.00));
starters.add(new Starter("Garlic Bread", 8.00));
starters.add(new Starter("Chicken Wings", 9.00));
starters.add(new Starter("Caesar Salad", 10));
starters.add(new Starter("N/A", 0));
}
public void addMain(){
mains = new ArrayList<Main>();
mains.add(new Main ("Beef Burger", 16.5));
mains.add(new Main("Steak", 18.50));
mains.add(new Main("Spaghetti Bolognese", 14.00));
mains.add(new Main("Pizza", 14.75));
mains.add(new Main("Vegan Lasagne", 15.30));
mains.add(new Main("N/A", 0));
}
public void addDesserts(){
desserts = new ArrayList<Desserts>();
desserts.add(new Desserts("Sticky Toffee Pudding", 7.5));
desserts.add(new Desserts("Vegan Brownie", 7.5));
desserts.add(new Desserts("Ice Cream Sundae", 7.5));
desserts.add(new Desserts("Apple Tart", 7.5));
desserts.add(new Desserts("N/A", 0));
}
public void addDrinks() {
drinks = new ArrayList<Drinks>();
drinks.add(new Drinks("Beer", 5.3));
drinks.add(new Drinks("Wine", 7.0));
drinks.add(new Drinks("Coca Cola", 3.30));
drinks.add(new Drinks("Fanta", 3.30));
drinks.add(new Drinks("Water", 0));
drinks.add(new Drinks("N/A", 0));
}
public ArrayList<Starter> getStarters() {return starters;}
public ArrayList<Main> getMains() {return mains;}
public ArrayList<Desserts> getDesserts() {return desserts;}
public ArrayList<Drinks> getDrinks() {return drinks;}
@Override
public String toString() {
String startersList = "+";
for (Starter s : starters) {
startersList += s.toString();
}
return startersList;
}
}
账单class:
package BillsIncome;
import Foods.Desserts;
import Foods.Drinks;
import Foods.Main;
import Foods.Starter;
import java.awt.*;
import java.util.ArrayList;
public class Bill {
public static void main(String[] args) {
Menu menu = new Menu();
TakeOrder orders = new TakeOrder();
ArrayList<String> order = new ArrayList<String>();
order.add(orders.selectStarter());
order.add(orders.selectMain());
order.add(orders.selectDessert());
order.add(orders.selectDrink());
System.out.println(menu.getStarters());
}
}
线
System.out.println(menu.getStarters());
给我一个错误:“无法解析菜单中的方法 getStarters”
帮助?? :P
基本上,就像@tgdavies 所说的那样,您的问题是您的程序假定您要创建的 Menu object 来自java.awt.Menu
。
为了让你的主要方法工作,你所要做的就是为你的 Menu.java 创建一个Menu.java
,像这样的 header:
package Restaurant;
import java.util.ArrayList;
public class Menu {
/**
* @author Max Huddlestan
*/
// ... All other class stuff below
}
现在您的菜单 class 将与餐厅 package 相关联,您可以通过执行import Restaurant.Menu;
在程序的顶部。
如果您不想在 Bill 程序中导入 Menu class,则需要确保这两个文件位于同一目录中。
我希望这有助于澄清事情!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.