Ребят подскажите, есть класс, в нём переменные:
double[][] weightIH;
double[][] weightHO;
Значение по умолчание их null, есть метод где значения этих переменных инициализируются:
void test() {
weightIH = new double[1 + NUM_IN][NUM_HID];
weightHO = new double[1 + NUM_HID][NUM_OUT];
for (int j = 0; j < NUM_HID; j++)
for (int i = 0; i < 1 + NUM_IN; i++)
weightIH[i][j] = 2.0 * (randomize() - 0.5) * smallwt;
for (int k = 0; k < NUM_OUT; k++)
for (int j = 0; j < 1 + NUM_HID; j++)
weightHO[j][k] = 2.0 * (randomize() - 0.5) * smallwt;
}
Затем, имеется класс где нужны значения этих переменных:
class Training {
void name() {
Network network = new Network();
for (int j = 0; j < numHidden; j++) {
sumH[j] = network.weightHO[0][j];
for (int i = 0; i < numInput; i++)
sumH[j] += input[p][i] * network.weightIH[1 + i][j];
hidden[j] = 1.0 / (1.0 + Math.exp(-sumH[j]));
}
}
}
После запуска, ловлю NullPointerException, т.е. в классе Training переменные weightIH и weightOH равны null.
Как решить проблему с передачей значений переменных, без null?
void test()поэтому переменные и не инициализируются. И вообще наверно лучше инициализировать значения в конструкторе. Т.е. в классеNetworkделать конструктор в котором инициализировать данный переменные. – I. Smirnov Apr 29 '16 at 12:29null– I. Smirnov Apr 29 '16 at 12:33Training.nameсоздается отдельный объектNetwork. То что вы где-то там вmainу какого-то другого объекта что-то вызвали на него не влияет. Возможно, вам стоит изменить методname()наname( Network network )и передавать нужный объект в качестве параметра. – zRrr Apr 29 '16 at 12:52