构造函数确实定义时构造函数未定义

时间:2013-02-07 09:01:57

标签: java

此行导致错误“构造函数Vector(double [],double [])未定义”:

Vector<trainingSet> set = new Vector<trainingSet>({1.0, 1.0}, {0.0, 0.0});

虽然类“trainingSet”确实有相应的构造函数:

public class trainingSet {
    public double [] pattern, result;
    public trainingSet(){}
    public trainingSet(double[] Pattern, double[] Result){
        pattern = Pattern;
        result = Result;
    }
}

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

因为您没有初始化trainingSet,而是Vector类本身。 Vector只有默认构造函数,构造函数具有初始大小,您还可以将其他集合传递给它。你应该做点什么

Vector<trainingSet> vector = new Vector<trainingSet>();
double[] result = {1.0, 1.0};
double[] pattern = {0.0, 0.0};
vector.add(new trainingSet(result, pattern));

除非您不需要同步,否则请考虑使用List代替VectorVectorList慢得多。{/ 1}}。

答案 1 :(得分:2)

Java的Vector没有构造器采用集合类型的单个元素。你也试图通过传递两个带有双精度的Arrays来构造向量,而不是一个trainingSet。可能的解决方法是:

Vector<trainingSet> set = new Vector<trainingSet>();
set.add(new trainingSet(new double[]{1.0, 1.0}, new double{0.0, 0.0}));

答案 2 :(得分:1)

您将参数传递给矢量构造函数,而不是在名为 training Set

的类的构造函数中传递

答案 3 :(得分:1)

你正在调用不存在的Vector类的构造函数,试试这个,

    double[] Pattern={1.0, 1.0};
    double[] Result={0.0, 0.0};

    Vector<trainingSet> set = new Vector<trainingSet>();
    set.add(new trainingSet(Pattern, Result));

答案 4 :(得分:0)

因为您的定义Vector<trainingSet>

Vector只需要trainingSet类型,而不是double premitive

您可以将其更改为

Vector<trainingSet> set = 

new Vector<trainingSet>().add(new trainingSet({1.0, 1.0},{0.0,0.0})));