0

Each time I try to run this method

private void resetOdds() {
    mOdds[1] = 0.10;
    mOdds[2] = 0.25;
    mOdds[3] = 0.35;
    mOdds[4] = 0.30;
}

I get an IndexOutOfBounds error. I don't know why, as I supply enough items in the array to change:

private final double[]      mOdds           = { 0.10, 0.25, 0.30, 0.35 };

Does anyone know why I'm getting this error?

4

5 回答 5

5

您的索引减少了一个;它应该从 0 开始:

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;
于 2012-07-02T22:09:15.453 回答
1

在 Java 中,数组索引从 0 开始。

因此,要访问第 k 个元素,您需要为数组提供第 (k-1) 个索引。

此外,如果您的数组大小为 n,则意味着您的索引从 0 运行到 n-1。

最后,这解决了您的问题:

private void resetOdds() {

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;

}
于 2012-07-02T22:42:44.150 回答
1

将代码更改为:

private void resetOdds() {

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;

数组在 Java 中基于零。

于 2012-07-02T22:09:20.233 回答
1
private void resetOdds() {

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;

}

从 0 开始索引。

于 2012-07-02T22:09:59.417 回答
0

数组是基于 0 的。尝试:

private void resetOdds() {

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;

否则,当你去寻找“4”时,由于没有第 5 个元素,你会得到错误。

于 2012-07-02T22:10:05.377 回答