Вы инициализировали массив, но не заполнили его.
Рассмотрим эту строку:
field[i][j].setF(F);
Когда вы делаете
field[i][j]
вы обращаетесь к массиву; т.е. получить то, что находится в массиве в этой позиции. Поскольку вы ничего не поместили в массив, вы получите ноль. Но вы сразу же попытаетесь позвонить setF
.
Я заметил, что вы делаете
node n = new node();
вне петли. Вы, вероятно, хотите сделать это в цикле.
node n = new node();
n.setF(F);
field[i][j] = n;
Этот код создает экземпляр node
, устанавливает для него значение, а затем помещает его в массив в указанной позиции. Более причудливый подход - сделать что-то вроде
node n = field[i][j];
if (n == null) { // initialize n at the position if it doesn't exist
n = new node();
field[i][j] = n;
}
field[i][j].setF(f);
В качестве альтернативы, вы можете перебрать массив и поставить новый node
в каждой позиции сразу после инициализации массива.
Наконец, стандартная практика Java - начинать имена классов с заглавных букв. node
должно быть Node
.