2014-10-26 2 views
1

Im учится делать игру, а im почти сделан с основной частью, но не могу получить что-то одно. Мне нужно создать несколько полей из Field.java Кодекса от Field.java является следующейArrayList от объекта и конкретного имени для объектов

package matedor; 

class Field{ 
    private String name; 
    private int number; 

    public Field (String fieldname, int fieldnumber){ 
     this.name = fieldname; 
     this.number= fieldnumber; 
    } 

    public String getFieldname(){ 
     return name; 
    } 
    public int getFieldnumber(){ 
     return number; 
    } 

    public String toString(){ 
     return number+name; 
    } 

    public boolean equals(Object obj){ 
     Field field = (Field) obj; 
     return (number == field.number && name.equals(field.name)); 
    } 
} 

В моем основном я должен произвести следующее, которое не редактируется:

fieldname1, fieldname2.....to fieldname40 

Я знаю, нужно сделать это с помощью ArrayList, и я хочу создать 40 экземпляров поля, поэтому у меня есть от имени поля1 до имени поля40. Как это сделать?

В моем основном я попытался сделать следующее, но я получаю пустой оператор

Field[] felterISpil=new Field[40]; 
System.out.println(Arrays.toString(felterISpil)); 

Выход:

[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
+0

пожалуйста, сохранить свой стиль кронштейн последовательны и форматировать Ваш код правильно. –

ответ

1

вам необходимо инициализировать .ВЫ получают нулевые, так как значение по умолчанию объекты null .you есть declare но не initialize еще.

вам нужно передать String fieldname,int fieldnumber конструктору при инициализации .your конструктор имеет 2 параметра String fieldname, int fieldnumber

public Field (String fieldname, int fieldnumber) 

, поэтому вам нужно пройти String and int

felterISpil[0]=new Field("fieldname",1); 
felterISpil[1]=new Field("fieldname2",2); 

вы должны пройти значения, которые вы хотите для конструктора. Как только вы хотите протестировать его без инициализации один за другим, следующий код инициализирует Л.Л. элемент вашего массива поля

for(int i=0;i<felterISpil.length;i++){ 
    felterISpil[i]=new Field("fieldname",1); 
} 
System.out.println(Arrays.toString(felterISpil)); 

выход не является нулевым больше

+0

Я получаю сообщение об ошибке, когда я это делаю. Создать поле конструктора() в Matedor.Поле – user1098185

+0

@ user1098185 см. Обновленный –

+0

@ user1098185 вам следует передать String fieldname, int fieldnumber для конструктора –

1

Прежде всего, имейте в виду, что вы создаете конструктор класса Field. Итак, в main() после того, как вы создали массив полей класса, выполнив это поле felterISpil [] = новое поле [40]; то перед вызовом любого метода класса Field вам нужно создать объект из него, выполнив это felterSpil [index] = new Field (FieldName, FieldNumber); Как и указать в ur конструкторе таким образом синтаксис фактический он будет. felterSpil [0] = новое поле (поле1, 1); И тогда вы можете вызвать любой метод и будет получить правильное значение

+0

Мое предложение может выглядеть так ненадлежащим Я написал его через свой мобильный, но его до точка n покрывает то, что вам нужно. Надеюсь, что это поможет вам –

1

Вам нужно создать экземпляр каждого Field Попробуйте следующее:

List fields = new ArrayList(); 
for(int i = 1; i <= 40; i++){ 
    fields.add(new Field("Field"+i, i)); 
} 
Смежные вопросы