"实施 该 MenuRandomize 类。 该 构造函数 收到 该 文件 名称 的 4 文件, 一 对于 每 类型 的 膳食, 和 使用 文件管理器 至 加载 数据 从 这些 文本 档 成 该 4 数组列表 decleared 如 性能 (一 排列 对于 每 类型 的 皿)"
现在我被卡在randomMenu()上了。如何从arrayLists中随机选择并添加到对象?我想我应该返回Menu但它会返回一个错误。我选择了一个随机数。我从另一个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?**
这样更好吗?
public randomMenu() {
ArrayList<Menu> menu;
//= new ArrayList <Menu>();
int indexEntrees=(int) Math.random() * entree.size() - 1;
entree = entrees.get(indexEntrees);
Menu.add(0,entree);
int indexD=(int) Math.random() * dessert.size() - 1;
dessert = desserts.get(indexD);
Menu.add(1,dessert);
int indexSalad=(int) Math.random() * salad.size() - 1;
salad = salads.get(indexSalad);
Menu.add(2,dessert);
int indexSide=(int) Math.random() * side.size() - 1;
entree = sides.get(indexSide);
Menu.add(3,dessert);
return Menu[];
答案 0 :(得分:1)
您的代码中存在很多错误。它甚至不会编译。尝试使用IDE。
randomMenu()
方法的返回类型更改为ArrayList<Menu>
。 entree = entrees.get(indexEntrees);
调用列表中的get会获得Entree
的单个实例,但您的entree
是一个列表。你和别人一样。您还使用了Side实例的Entree引用。您的代码应该像 -
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;
}