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

时间:2015-03-28 03:15:30

标签: java math arraylist

"实施 该 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[];

1 个答案:

答案 0 :(得分:1)

您的代码中存在很多错误。它甚至不会编译。尝试使用IDE。

  1. 如果要退回,请将randomMenu()方法的返回类型更改为ArrayList<Menu>
  2. 您无法entree = entrees.get(indexEntrees);调用列表中的get会获得Entree的单个实例,但您的entree是一个列表。你和别人一样。您还使用了Side实例的Entree引用。
  3. 您实际上并未添加到菜单列表中。此外,还可以使用所有Deseret,Side等类扩展Menu类。
  4. 您的代码应该像 -

    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;
    }