新手求助:Java中触发ArrayIndexOutOfBoundsException异常问题咨询
Java数组索引越界问题解决方法
你遇到的java.lang.ArrayIndexOutOfBoundsException异常,核心原因是Java数组采用0起始索引:
- 当你创建
int[] numbers = new int[10];时,数组的长度是10,但有效索引范围是0到9,不存在索引为10的元素,直接访问numbers[10]必然触发越界异常。
修正方案
如果你想打印数组的第10个元素(也就是数组的最后一个元素),需要使用索引9,或者用numbers.length - 1来动态获取最后一个元素的索引(这种写法更健壮,数组长度变化时无需手动修改索引值)。
修改后的代码如下:
import java.util.Random; public class Main { public static void main(String[] args) { int[] numbers = new int[10]; Random r = new Random(); for(int i = 0; i < numbers.length; i++){ numbers[i] = r.nextInt(); } // 打印第10个元素(对应索引9) System.out.println(numbers[9]); // 或者更通用的写法,适配任意长度的数组 // System.out.println(numbers[numbers.length - 1]); } }
补充提示
- 你代码里的循环条件
i < numbers.length是正确的,它保证了循环只会访问0到numbers.length-1的有效索引 - 在Java、C、C++等多数编程语言中,数组都是0起始索引,第N个元素对应的索引是
N-1,记住这个规则能避免绝大多数数组越界问题
内容的提问来源于stack exchange,提问作者George Lucas
相关产品推荐
相关产品推荐

