0

このメソッドを実行しようとするたびに

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

なぜこのエラーが発生するのか誰かが知っていますか?

4

5 に答える 5

5

インデックス作成が1つずれています。0から開始する必要があります。

mOdds[0] = 0.10;
mOdds[1] = 0.25;
mOdds[2] = 0.35;
mOdds[3] = 0.30;
于 2012-07-02T22:09:15.453 に答える
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 に答える
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 に答える
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 に答える