在java中使用Vector时出现ArrayOutOfBound异常

时间:2014-06-04 17:24:31

标签: java vector

我正在编程神经网络,我有以下问题: 我有2个类:Perceptron和NeuralNetwork,在NeuralNetwork中我写了这个C' tor:

    //First Layer initialization
    for (int i=0; i<100;i++) {
        Perceptron p = new Perceptron(true);
        Information temp = new Information(1,null);
        p.v.addElement(temp);
    //  p.v.elementAt(i).setWeight(1);
        layer1.addElement(p);
    }

    //Second Layer initialization
    for (int i=0;i<70;i++) {
        Perceptron p = new Perceptron(false);
        for (int j=0; j<100;j++) {
            double t = 0;
            while ((t = r.nextDouble()) == 0);
            Information tmp=new Information(t, layer1.elementAt(j));
            p.v.addElement(tmp);
        }
        layer2.addElement(p);
    }

    //Third Layer initialization
    for (int i=0;i<5;i++) {
        Perceptron p = new Perceptron(false);
        for (int j=0;j<70;j++) {
            double t = 0;
            while ((t = r.nextDouble()) == 0);
            Information tmp=new Information(t, layer2.elementAt(j));
            p.v.addElement(tmp);
        }
        layer3.addElement(p);
    }

在Perceptron中,C&C;托尔是:

public Perceptron(boolean inpt)
{
    isInput=inpt;

}

我正在尝试运行此功能(在NeuralNetwork中):

public double[] exituteNet(int [][]in)
{   

    //Translate m*n matrix to m*n array 
    double [] inputArr=new double[in.length*in[0].length];
    for(int i=0,count=0;i<in.length;i++)
        for(int j=0;j<in[0].length;j++)
        {
            inputArr[count]=in[i][j];
            count++;
        }

    for(int i=0;i<layer1.size();i++)
    {
        layer1.elementAt(i).input.setElementAt(inputArr[i], 0);
    }

    for(int i=0;i<layer2.size();i++)
    {
        for(int j=0;j<layer1.size();j++)
            layer2.elementAt(i).input.setElementAt(layer1.elementAt(j).output(), j);
    }

    for(int i=0;i<layer3.size();i++)
    {
        for(int j=0;j<layer2.size();j++)
            layer3.elementAt(i).input.setElementAt(layer2.elementAt(j).output(), j);
    }

    double[]res= new double[layer3.size()];
    for(int i=0;i<res.length;i++)
        res[i]=layer3.elementAt(i).output();
    return res;
}

我从这一行开始获得了大量的ArrayOutOfBoundsException

        layer1.elementAt(i).input.setElementAt(inputArr[i], 0);

我还尝试将NeuralNetwork初始化(第一层功能)更改为:

    for (int i=0; i<100;i++) {
        Perceptron p = new Perceptron(true);
        p.v.elementAt(i).setWeight(1);
        layer1.addElement(p);
    }

我也在这里得到ArrayOutOfBoundsException

* input,v是Perceptron类中的向量

我不知道该怎么做,我很乐意帮忙

0 个答案:

没有答案