java中数组的indexoutofexception出现运行时错误?

nsc4cvqm  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(391)

这个问题在这里已经有答案了

是什么导致java.lang.arrayindexoutofboundsexception以及如何防止它(26个答案)
14天前关门了。
它向我显示了运行时错误java.lang.arrayindexoutofboundsexception:第5行solution.twosum的长度3的索引3越界

class Solution {
    public int[] twoSum(int[] nums, int target) {

        for(int i=0;i<nums.length;i++){
            int result=nums[i]+nums[i+1];
            if(result==target){  
                return new int[]{i,i+1};
            }

    } 
        throw new IllegalArgumentException("No two sum solution");

    }
}
s4n0splo

s4n0splo1#

根本原因

int result=nums[i]+nums[i+1];

这个 nums[i+1] 这里总是抛出java.lang.arrayindexoutofboundsexception,因为最后一个索引加1将导致超出允许范围的索引。
解决方案
修改for循环如下:

for(int i=1;i<nums.length;i++){
            int result=nums[i-1]+nums[i]; // you will not miss evaluating any index as per your algorithm
            if(result==target){  
                return new int[]{i-1,i}; // your required indexes will change accordingly
            }
        }

相关问题