Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ArrayList中随机选择并添加到对象?_Java_Math_Arraylist - Fatal编程技术网

Java 如何从ArrayList中随机选择并添加到对象?

Java 如何从ArrayList中随机选择并添加到对象?,java,math,arraylist,Java,Math,Arraylist,“实施 这个 menuradominze 班级。 这个 建造师 收到 这个 文件 名称 属于 4. 文件夹, 一 对于 每个 类型 属于 一餐 和 使用 文件管理器 到 负载 数据 从…起 这些 文本 文件夹 进入 这个 4. ArrayList 清除 作为 性质 (一) 排列 对于 每个 类型 属于 " 现在我被随机菜单卡住了()。如何从ArrayList中随机选择并添加到对象?我想我应该返回菜单,但它返回了一个错误。我选择了一个随机数。我是否从另一个arrayList(该元素)获取该索引并将

“实施 这个 menuradominze 班级。 这个 建造师 收到 这个 文件 名称 属于 4. 文件夹, 一 对于 每个 类型 属于 一餐 和 使用 文件管理器 到 负载 数据 从…起 这些 文本 文件夹 进入 这个 4. ArrayList 清除 作为 性质 (一) 排列 对于 每个 类型 属于 "

现在我被随机菜单卡住了()。如何从ArrayList中随机选择并添加到对象?我想我应该返回菜单,但它返回了一个错误。我选择了一个随机数。我是否从另一个arrayList(该元素)获取该索引并将其存储在另一个arrayList中?到目前为止,我有这个

public class MenuRandomize {

private ArrayList<Entree> entree;
private ArrayList<Salad> salad;
private ArrayList<Dessert> dessert;
private ArrayList<Side> side;

public MenuRandomize(String entreeFile, String sideFile, String saladFile, String dessertFile) {
    entree = FileManager.readEntrees(entreeFile);
    dessert = FileManager.readDesserts(dessertFile);
    side= FileManager.readSides(sideFile);
    salad= FileManager.readSalads(saladFile);
}

public randomMenu() {
    ArrayList<Menu> menu;
    int indexEntrees=(int) Math.random() * entree.size() - 1;
    entree = entrees.get(indexEntrees);

    int indexD=(int) Math.random() * dessert.size() - 1;
    dessert = desserts.get(indexD);
                             **<----add element here to arrayList <Menu>?**
    int indexSalad=(int) Math.random() * salad.size() - 1;
    salad = salads.get(indexSalad);

    int indexSide=(int) Math.random() * side.size() - 1;
    entree = sides.get(indexSide);

    return null; **<--- return Menu?**
公共类菜单化{
私人ArrayList主菜;
私人沙拉;
私人ArrayList甜点;
私人ArrayList方;
公共菜单名(字符串entrefile、字符串侧文件、字符串saladFile、字符串甜点文件){
entre=FileManager.readentre(enterefile);
甜点=FileManager.readDesserts(甜点文件);
side=FileManager.readSides(侧文件);
salad=FileManager.readSalads(saladFile);
}
公共菜单(){
ArrayList菜单;
int indexEntrees=(int)Math.random()*entre.size()-1;
entre=entres.get(indexEntrees);
int indexD=(int)Math.random()*destry.size()-1;
甜点=甜点。获取(indexD);

** 您的代码中有很多错误。它甚至无法编译。请尝试使用IDE

  • 如果要返回,请将
    randomMenu()
    方法的返回类型更改为
    ArrayList
  • 您不能执行
    entre=entres.get(indexentreses);
    在列表中调用get将获得
    entre
    的单个实例,但您的
    entre
    是一个列表。与您对其他人所做的相同。您还使用了entre引用作为副实例
  • 您实际上并没有将其添加到菜单列表中。此外,为了使其生效,您的所有Deseret、Side等类都应该扩展菜单类
  • 您的代码应该是-

    public ArrayList<Menu> randomMenu() {
        ArrayList<Menu> menu = new ArrayList<Menu>();
        int indexEntrees=(int) Math.random() * entree.size() - 1;
        Entree randomEntree = entrees.get(indexEntrees);
        menu.add(randomEntree);
    
        int indexD=(int) Math.random() * dessert.size() - 1;
        Dessert randomDessert = desserts.get(indexD);
        menu.add(randomDessert);
    
        int indexSalad=(int) Math.random() * salad.size() - 1;
        Salad randomSalad = salads.get(indexSalad);
        menu.add(randomSalad);
    
        int indexSide=(int) Math.random() * side.size() - 1;
        Side randomSide = side.get(indexSide);
        menu.add(randomSide);
    
        return menu;
    }
    
    publicArrayList随机菜单(){
    ArrayList菜单=新建ArrayList();
    int indexEntrees=(int)Math.random()*entre.size()-1;
    entre randomentre=entres.get(indexentres);
    菜单。添加(随机中心);
    int indexD=(int)Math.random()*destry.size()-1;
    甜点随机甜点=甜点。获取(indexD);
    菜单。添加(随机甜点);
    int indexSalad=(int)Math.random()*sala.size()-1;
    沙拉随机沙拉=沙拉.get(indexSalad);
    菜单。添加(随机沙拉);
    int indexSide=(int)Math.random()*side.size()-1;
    Side randomSide=Side.get(indexSide);
    菜单。添加(随机侧);
    返回菜单;
    }
    
    我建议使用IDE。您将列表定义为
    菜单
    ,并使用
    菜单
    调用add。Java是一种区分大小写的语言。您不能在不指定返回类型的情况下返回任何内容。请参考我的答案了解一些要点。我认为没有理由将主菜、沙拉、甜点和副菜分开。这些都可以在一个类中,食物。变量菜单应该是ArrayList。您需要添加到ArrayList菜单,而不是类菜单。在randomMenu()的末尾您应该返回菜单。谢谢。为什么add总是导致语法错误?因为您的类(如Desert、Side、Entre)不扩展菜单类。正如我所说的,让您的食物类扩展菜单类。例如,
    public class甜点扩展菜单{}
    让甜点扩展菜单对我来说没有意义。甜点可能会扩展食物。@DouglasZare编辑了错误输入。你是对的,将菜单用作超类没有意义。我回答了OP已经编写的代码。按照逻辑命名约定,它应该是
    ArrayList Menu=new ArrayList();
    其中FoodItem是其他具体FoodItem实际扩展或实现的类或接口。
    public ArrayList<Menu> randomMenu() {
        ArrayList<Menu> menu = new ArrayList<Menu>();
        int indexEntrees=(int) Math.random() * entree.size() - 1;
        Entree randomEntree = entrees.get(indexEntrees);
        menu.add(randomEntree);
    
        int indexD=(int) Math.random() * dessert.size() - 1;
        Dessert randomDessert = desserts.get(indexD);
        menu.add(randomDessert);
    
        int indexSalad=(int) Math.random() * salad.size() - 1;
        Salad randomSalad = salads.get(indexSalad);
        menu.add(randomSalad);
    
        int indexSide=(int) Math.random() * side.size() - 1;
        Side randomSide = side.get(indexSide);
        menu.add(randomSide);
    
        return menu;
    }