IndexOutOfBounds with array

每次我尝试运行此方法

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 }; 

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

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

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

开始索引为0。

将代码更改为:

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

数组在Java中为零。

在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; } 

数组基于0。 尝试:

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

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