2

なぜArrayIndexOutOfBoundsException発生し、Androidでそれを回避する方法は?

4

4 に答える 4

6

存在しない配列項目にアクセスしようとすると、この例外がスローされます。

String [] myArray = new String[2];

myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception

配列項目にアクセスする前に、インデックスが負ではなく、配列の長さを超えていないことを確認する必要があります。

于 2011-02-10T14:26:10.107 に答える
4

ArrayIndexOutOfBoundsExceptionが発生するのはなぜですか[...]

Java言語仕様からの引用は次のとおりです。10.4配列アクセス

すべてのアレイアクセスは実行時にチェックされます。ゼロ未満または配列の長さ以上のインデックスを使用しようとすると、ArrayIndexOutOfBoundsExceptionがスローされます。

 

[...]そしてAndroidでそれを回避する方法は?

yourArray.lengthインデックスが[0...- 1]の範囲内にあることを確認してください。

(上記の-1に注意してください。配列は0インデックスです。つまり、最初の要素はインデックス0にあり、最後の要素は長さ-1にあります。)

于 2011-02-10T14:43:27.550 に答える
1

前述のように、存在しない配列項目にアクセスすることを意味します。

ほとんどの場合、誰かが配列のサイズ (長さ) を尋ね、最後の項目を として読み取ろうとするためarray[length]です。ただし、配列は0から始まるため、最後に読み取ることができるのはarray[length-1]

解決策はもちろん、存在しないアイテムにアクセスしないことです

于 2011-02-10T14:29:03.923 に答える
0

Android アプリケーションは Java プログラミング言語を使用するため、この例外は Android とは関係ありません。むしろ、 のように尋ねるべきですhow to avoid it in Java?

そして肝心なのは、配列内の無効なインデックスの値にアクセスしようとしているということです。

ここで公式ドキュメントを読んでください:

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

于 2011-02-10T14:31:03.110 に答える