2017-02-07 3 views
1

Я пытался заполнить ArrayList из Ingredients, которые являются объектами, в которых хранятся имя ингредиента (строка), цена (двойная), количество калорий (целое), и если ингредиент вегетарианский (булев).Использование сканера для заполнения ArrayList объектов

Поскольку будет множество ингредиентов, я думал, что должен использовать ArrayList. Как заполнить объект ингредиента данными из сканера? Это то, что я до сих пор:

public static void main(String[] args){ 
    Scanner s = new Scanner(System.in); 
    int numberOfIngredients = s.nextInt(); 
    List<Ingredient> ingredientArrayList = new ArrayList<Ingredient>(); 
    for (int i = 0; i< numberOfIngredients; i++){ 
     String ingredientName = s.next(); 
     double pricePerOunce = s.nextDouble(); 
     boolean isVegetarian = s.nextBoolean(); 
     int numberOfCalories = s.nextInt(); 
     ingredientArrayList.add(ingredientName, pricePerOunce, numberOfCalories, isVegetarian); 
    }// ends for loop to fill the ingredientArray 
} 
+0

Какие проблемы вы имея с кодом вы написали? Кроме того, мы, вероятно, должны увидеть, по крайней мере, конструктор вашего класса «Ингредиент», чтобы ответить на этот вопрос. – nhouser9

+0

У вас есть список объектов Ingredient, поэтому вы просто создаете и добавляете новый объект Ingredient. – NAMS

+0

Чтобы увеличить скорость вставки в ваш 'ArrayList', передайте количество ингредиентов в конструктор [' ArrayList'] (https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList .html # ArrayList-int-). 'new ArrayList <> (numberOfIngredients)' – 4castle

ответ

1
ingredientArrayList.add(ingredientName, pricePerOunce, numberOfCalories, isVegetarian); 

Должно быть что-то вроде этого

ingredientArrayList.add(new Ingredient(ingredientName, pricePerOunce, numberOfCalories, isVegetarian)); 

Ваш класс ингредиент должен также иметь конструктор, который принимает все четыре атрибута

Вы инстанцированы ArrayList тип объекта (CLASS OBJECT), этот ArrayList может хранить объект класса Ingredient, а не отдельные атрибуты.

+0

спасибо! Я не понимаю, что вы подразумеваете под второй частью об instatiated arrayList. В нем говорится: «Невозможно создать экземпляр типа Ingredient». Что это значит? Я думал, что, сохранив объект класса Ingredient, я мог хранить атрибуты Ингредиента (например, имя ингредиента, цена за унцию, количество калорий, вегетарианство). – etnie1031

+0

Когда вы создаете Список, вы определили Список для хранения типа объекта OBJECT при написании списка . Таким образом, список может хранить только списки объектов, и этот объект должен быть объектом класса Ingredient. Что вы сделали в первую очередь, вы пытаетесь сохранить Ингредиенты АТРИБУТЫ в список объектов. Список объектов имеет много объектов, и каждый объект имеет множество атрибутов –

1

Ингредиент является объектом, так что ваш ArrayList в основном Список Ингредиент объектов. Чтобы добавить объект «Ингредиент» в ArrayList, вам нужно добавить объект в список, а не отдельные значения.

Что-то вроде этого:

ingredientArrayList.add(new Ingredient(ingredientName, pricePerOunce, numberOfCalories, isVegetarian)); 

 Смежные вопросы

  • Нет связанных вопросов^_^