猿问

是什么导致java.lang.ArrayIndexOutOfBoundsException

什么ArrayIndexOutOfBoundsException意思,我该如何摆脱它?

以下是触发异常的代码示例:

String[] name = { "tom", "dick", "harry" };for (int i = 0; i <= name.length; i++) {
    System.out.println(name[i]);}


慕尼黑的夜晚无繁华
浏览 6854回答 3
3回答

杨__羊羊

您的第一个停靠点应该是合理清楚地解释它的文档:抛出以指示已使用非法索引访问数组。索引为负数或大于或等于数组的大小。例如:int[]&nbsp;array&nbsp;=&nbsp;new&nbsp;int[5];int&nbsp;boom&nbsp;=&nbsp;array[10];&nbsp;//&nbsp;Throws&nbsp;the&nbsp;exception至于如何避免......嗯,不要这样做。小心你的数组索引。人们有时遇到的一个问题是认为数组是1索引的,例如int[]&nbsp;array&nbsp;=&nbsp;new&nbsp;int[5];//&nbsp;...&nbsp;populate&nbsp;the&nbsp;array&nbsp;here&nbsp;...for&nbsp;(int&nbsp;index&nbsp;=&nbsp;1;&nbsp;index&nbsp;<=&nbsp;array.length;&nbsp;index++){ &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(array[index]);}这将错过第一个元素(索引0)并在索引为5时抛出异常。此处的有效索引为0-4(含)。这里正确的惯用语for是:for&nbsp;(int&nbsp;index&nbsp;=&nbsp;0;&nbsp;index&nbsp;<&nbsp;array.length;&nbsp;index++)(当然,假设您需要索引。如果您可以使用增强型for循环,请执行此操作。)

波斯汪

if&nbsp;(index&nbsp;<&nbsp;0&nbsp;||&nbsp;index&nbsp;>=&nbsp;array.length)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Don't&nbsp;use&nbsp;this&nbsp;index.&nbsp;This&nbsp;is&nbsp;out&nbsp;of&nbsp;bounds&nbsp;(borders,&nbsp;limits,&nbsp;whatever).}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Yes,&nbsp;you&nbsp;can&nbsp;safely&nbsp;use&nbsp;this&nbsp;index.&nbsp;The&nbsp;index&nbsp;is&nbsp;present&nbsp;in&nbsp;the&nbsp;array. &nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;element&nbsp;=&nbsp;array[index];}也可以看看:Java教程 - 语言基础 - 数组更新:根据您的代码段,for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i<=name.length;&nbsp;i++)&nbsp;{索引包含数组的长度。这是出界的。您需要替换<=的<。for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;name.length;&nbsp;i++)&nbsp;{

一只斗牛犬

简而言之:在最后一次迭代中for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<=&nbsp;name.length;&nbsp;i++)&nbsp;{i将等于name.length哪个是非法索引,因为数组索引是从零开始的。你的代码应该阅读for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;name.length;&nbsp;i++)
随时随地看视频慕课网APP
我要回答