0

我明白了

exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3090 >= 3090
    at java.util.Vector.elementAt(Vector.java:470)

当我在下面运行一段代码时。欢迎任何帮助。

prob = new svm_problem();
prob.l = vy.size();
prob.x = new svm_node[prob.l][];
for(int i=0;i<prob.l;i++)
    prob.x[i] = vx.elementAt(i);
prob.y = new double[prob.l];
for(int i=0;i<prob.l;i++)
    prob.y[i] = vy.elementAt(i);
4

4 回答 4

1

vy.size()用于确定循环的边界,然后访问vxvy。看起来vx比 短vy,导致显示的异常。

于 2013-02-28T09:49:43.290 回答
0

prob.l是 的大小vy,您还需要找到 的大小vx

for(int i=0;i<vx.size();i++)
    prob.x[i] = vx.elementAt(i);
于 2013-02-28T09:51:39.570 回答
0

您在 vx 上从 0 循环到 prob.l-1,但 prob.l 是基于 vy 的大小,这似乎更大。

于 2013-02-28T09:52:20.253 回答
0

当它从 0 迭代i到. 如果大于这将导致类似于您所拥有的异常。vxvy.size() - 1vyvx

于 2013-02-28T09:50:53.693 回答