Java-我不明白为什么会收到NullPointerException

时间:2018-07-19 03:03:38

标签: java nullpointerexception null-pointer

我正在使用Java创建神经网络程序,我的相关类是NeuronLayerNeuralNetwork。我有一个名为NeuralNetwork的{​​{1}}实例。 network具有一个称为network的私有Layer数组和一个名为layers的私有Neuron数组。 inputNeurons(输入层)在网络的构造函数中初始化,并且layers[0]中的Neuron数组被分配给layers[0]

inputNeurons

这里是layers[0] = new Layer(inputLayerSize); inputNeurons = layers[0].getNeurons(); 构造函数:

Layer

如您所见,每个 public Neuron[] neurons; Layer(int size) { neurons = new Neuron[size]; for(Neuron neuron : neurons) { neuron = new Neuron(); } } 中的Neuron 已被初始化。但是,在neurons方法之一的下面一行中,我得到了network

NullPointerException

这对我来说没有意义,因为每个inputNeurons[index].setValue(input[index]); 都对应一个初始化的inputNeurons[index],每个Neuron都是一个input[index],不能为{{1} }。显然我的理解有问题,请赐教。谢谢。

编辑:我确认所有double均为null

1 个答案:

答案 0 :(得分:1)

这里的问题是,当您创建对象时,您并没有按照自己的想法进行循环。

for (Neuron neuron : neurons) {
    neuron = new Neuron();
}

相同
for (int i = 0; i < neurons.length; i++) {
    Neuron neuron = neurons[i];
    neuron = new Neuron(); // the array is NOT altered here
}

你想要什么

for (int i = 0; i < neurons.length; i++) {
    neurons[i] = new Neuron(); // the array IS altered here
}