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个元素,你会得到错误。