此行导致错误“构造函数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;
}
}
有什么想法吗?
答案 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代替Vector
。 Vector
比List
慢得多。{/ 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})));