IndexOutOfBounds with array

时间:2012-07-02 22:07:38

标签: java android

每次我尝试运行此方法

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

我收到IndexOutOfBounds错误。我不知道为什么,因为我在数组中提供了足够多的项目来改变:

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

有谁知道我为什么会收到这个错误?

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

将代码更改为:

private void resetOdds() {

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

数组在Java中为零。

答案 2 :(得分:1)

private void resetOdds() {

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

}

开始索引为0.

答案 3 :(得分: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;

}

答案 4 :(得分:0)

数组基于0。尝试:

private void resetOdds() {

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

否则,当您去寻找" 4"时,由于没有第5个元素,您会收到错误。