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