繁体   English   中英

如何从另一个 class 访问一个写在一个 class 中的 ArrayList?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM