2014-01-31 7 views
3

В качестве части задания я должен создать кучу прямоугольников и поместить каждый из этих объектов в ArrayList, который должен быть инициализирован в конструкторе. Кажется, я смутил себя. Eclipse говорит мне, что я не могу использовать .add(new_rec) с этим объектом, потому что он имеет тип (Double, Double). Я предполагаю, что ArrayList - это просто <Double>, что вызывает некоторые проблемы. Помимо этого, я думаю, что я ошибаюсь в другом месте, но я не уверен, где.Инициализация ArrayList в конструкторе

public class WhyWontThisWork { 

     WhyWontThisWork(Double name, Double rec_name){ 
      Rectangle new_rec = new Rectangle(23.1,43.0); 
      ArrayList<Double> name = new ArrayList<Double>(); 
      for(int i = 0; i < 10; i++){ 
       name.add(new_rec); 
      } 
     } 
} 

... и Rectangle класс выглядит ...

public class Rectangle { 
    private double length; 
    private double width; 

    public Rectangle(double length, double width){ 
     this.length = length; 
     this.width = width; 
    } 
+2

Основная причина заключается в том, что 'rectangle' _is not_ a' double', кроме того, вы должны указывать разные имена для 'name', они не могут быть одинаковыми – epoch

+0

также переменная' name' уже определена в области – MariuszS

+0

@ эпоха. К сожалению, моя ошибка в названии небрежности. Спасибо что подметил это. – Matt

ответ

2

Это действительно очень простодушного типа нужно для имени должно быть:

ArrayList<Rectangle> name = new ArrayList<Rectangle>(); 

Общий вид внутри <> представляет, какие вещи вы добавляете к ArrayList. Если вам нужно хранить массив двойных вы можете использовать ArrayList<Double>, если они являются строки, то ArrayList<String>

В вашем случае вам нужно хранить список прямоугольников так ArrayList<Rectangle> ваше решение.

+0

Итак, '<...>' должен быть заполнен любым объектом? Я смущен тем, почему здесь работает «Прямоугольник». – Matt

+0

Обновлено с дополнительными пояснениями - надеюсь, что это поможет. – Elemental

+0

Итак, если бы я создал класс, скажем, «Котята», и мне нужно было заполнить ArrayList этими объектами, я бы объявил «ArrayList '? – Matt

2

ArrayList используется потребность быть

ArrayList<Rectangle> name = new ArrayList<Rectangle>(); 

Как вы используете ArrayList, чтобы сохранить прямоугольники не парные.

0

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

ArrayList<Rectangle> name = new ArrayList<Rectangle>() 
0

Eclipse is right.

ArrayList<Rectangle> name = new ArrayList<Rectangle>(); 
name.add(new_rec); 
0

Также параметр и ArrayList name такое же, изменить его, как показано ниже:

WhyWontThisWork(Double nameDouble, Double rec_name){ 
       Rectangle new_rec = new Rectangle(23.1,43.0); 
       ArrayList<Rectangle> name = new ArrayList<Rectangle>(); 
       for(int i = 0; i < 10; i++){ 
        name.add(new_rec); 
       } 
      } 
0

Вы пытаетесь добавить Rectangle объект в ArrayListDouble, который держит предметы. Вот почему вы видите ошибку. Как указано в других ответах, наиболее вероятным решением является изменение списка на ArrayList<Rectangle>.

Возможно, вы должны прочитать немного о generics в Java here или here.

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