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()vxループの境界を決定するために使用され、ループは と の両方にアクセスしますvyvxは よりも短いように見えるvyため、示されている例外が発生します。

于 2013-02-28T09:49:43.290 に答える
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 に答える
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 に答える