1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み] Error : Index was outside the bounds of the array. [重複]

2022-01-12 11:02:57

質問

この問題が何であるかは理解していますが、私のプログラムが配列の外にある値を出力していることに困惑しています。

0から8までのintの配列がありますが、これは9個のintを格納できることを意味しますよね?ユーザが入力した値が1-9であることを確認するために、intをチェックする必要があります。私は整数から1を削除します(このように)。

if (posStatus[intUsersInput-1] == 0) //if pos is empty
{
    posStatus[intUsersInput-1] += 1; 
}//set it to 1

で、自分で9を入力するとエラーになります。配列の最後のintにアクセスする必要があります。関連するコード

public int[] posStatus;       

public UsersInput()    
{    
    this.posStatus = new int[8];    
}

int intUsersInput = 0; //this gets try parsed + validated that it's 1-9    

if (posStatus[intUsersInput-1] == 0) //if i input 9 it should go to 8?    
{    
    posStatus[intUsersInput-1] += 1; //set it to 1    
} 

実行すると、エラーが発生します。

"Index was outside the bounds of the array." "Index was outside the bounds of the array."

解決方法は?

9要素ではなく、8要素を格納できる配列を宣言しています。

this.posStatus = new int[8]; 

つまり、postStatusはインデックス0から7までの8つの要素を含むことになる。