なぜArrayIndexOutOfBoundsException
発生し、Androidでそれを回避する方法は?
4 に答える
存在しない配列項目にアクセスしようとすると、この例外がスローされます。
String [] myArray = new String[2];
myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception
配列項目にアクセスする前に、インデックスが負ではなく、配列の長さを超えていないことを確認する必要があります。
ArrayIndexOutOfBoundsExceptionが発生するのはなぜですか[...]
Java言語仕様からの引用は次のとおりです。10.4配列アクセス:
すべてのアレイアクセスは実行時にチェックされます。ゼロ未満または配列の長さ以上のインデックスを使用しようとすると、ArrayIndexOutOfBoundsExceptionがスローされます。
[...]そしてAndroidでそれを回避する方法は?
yourArray.length
インデックスが[0...- 1]の範囲内にあることを確認してください。
(上記の-1に注意してください。配列は0インデックスです。つまり、最初の要素はインデックス0にあり、最後の要素は長さ-1にあります。)
前述のように、存在しない配列項目にアクセスすることを意味します。
ほとんどの場合、誰かが配列のサイズ (長さ) を尋ね、最後の項目を として読み取ろうとするためarray[length]
です。ただし、配列は0から始まるため、最後に読み取ることができるのはarray[length-1]
解決策はもちろん、存在しないアイテムにアクセスしないことです
Android アプリケーションは Java プログラミング言語を使用するため、この例外は Android とは関係ありません。むしろ、 のように尋ねるべきですhow to avoid it in Java?
。
そして肝心なのは、配列内の無効なインデックスの値にアクセスしようとしているということです。
ここで公式ドキュメントを読んでください:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html