2013-10-27 1 views
0

У меня возникла ситуация, когда мне нужно заполнить массив объектов.Мне нужно использовать контрольную переменную или нет? (LinkedList)

Это мой код:

final class ObjectClass 
{ 
    List<ObjectClass> array; 
    private int data; 

    ObjectClass(int data) 
    { 
     this.data = data; 
    } 

    public void fillArray() { 
     array = new LinkedList<>(); 
     for(int i = 0;i < array.size();i++) 
     { 
      data++; 
      array.add(new ObjectClass(data)); 
     } 

    } 
} 

И я не подвожу никакого результата с этим. Что не так с этим? Действительно ли для этого: array.add(new ObjectClass(data))?

В этой ситуации нет смысла выводить результаты и логику. Я просто хочу сделать массив ObjectClass с разными значениями данных. Я видел, кто-то использовал ссылочную переменную и сохранил ее в массиве, но действительно ли это сделать без нее, создав только объект?

Добавьте метод печати:

public void display() { 
    for(ObjectClass e : array) { 
     System.out.println(e); 
    } 
} 
+1

Что значит «нет результатов»? Что вы пробовали? Что именно произошло? –

+0

Я пытаюсь создать массив ObjectClass и распечатать его объекты. – Ernusc

ответ

1

Каждый раз, когда вы звоните fillArray, вы уничтожаете данные (однако он сделал свой путь там) в массиве с этим:

array = new LinkedList<>(); 

Во-первых, изменить поле, чтобы использовать нетерпеливый инициализации вместо этого, так что вы «Не переписывайте свое поле при каждом вызове метода.

List<ObjectClass> array = new LinkedList<>(); 

Теперь, для вашего метода. Вы не вводите цикл, так как array всегда пуст. В зависимости от того, что вы пытаетесь выполнить, вы должны передать объект или создать его копию n раз.

public void fillArray(int times) { 

    for(int i = 0;i < times; i++) { 
     data++; 
     array.add(new ObjectClass(data)); 
    } 

} 

Наконец, заметим, что, если цикл сделал работу, data и array.size() будут эквивалентны (так долго, как вы ничего не удалить). Я переосмыслил цель/намерение этой переменной.

+0

Спасибо, я работаю над этим. ! – Ernusc

0

Объявить List<ObjectClass> array, как static, он будет делать то, что вы пытаетесь достичь, создав Class variable не на Object Level

0

Проблема заключается в том array (который на самом деле не массив, кстати - он неверно назван) изначально имеет размер 0, поэтому метод ничего не делает.

Вы забыли рассмотреть, сколько номеров вы хотите «заполнить» структуру данных.

4

Причина, почему ничего не происходит здесь:

for(int i = 0;i < array.size();i++) 

Линия до того, вы только что создали array так это все еще пусто - значит, тело цикла не выполняется вообще.

+0

Ах, да, да, не заметил этого. Благодаря! – Ernusc

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