Java初始化3D数组触发Array Index Out Of Bounds Exception求助
解决Java 3D数组初始化的ArrayIndexOutOfBoundsException错误
错误原因
你的代码触发数组越界的核心问题在循环终止条件:
- 第一维度数组长度为
prices.length,Java数组索引从0开始,有效索引范围是0到prices.length - 1,但外层循环写的是i <= prices.length,当i等于prices.length时,直接超出第一维度的最大索引,触发报错。 - 第二、第三维度的数组长度都是2,有效索引只有
0和1,但内层循环用了j <= 2和k <= 2,当j或k等于2时同样会越界,只是第一维度的错误先被触发。
修正后的代码
public static int maxProfit(int[] prices) { int[][][] dp = new int[prices.length][2][2]; // 初始化3D数组 // 循环终止条件改为小于数组长度,而非小于等于 for(int i = 0; i < prices.length; i++){ for(int j = 0; j < 2; j++){ for(int k = 0; k < 2; k++){ dp[i][j][k] = 10001; } } } // 补充int类型方法的返回值(可根据实际需求调整返回内容) return 0; }
内容的提问来源于stack exchange,提问作者Sayantan
相关产品推荐
相关产品推荐

