当前位置: 首页 > 知识库问答 >
问题:

如何解决这个运行时错误:java。lang.ArrayIndexOutOfBoundsException

阴高刚
2023-03-14

给定一个整数数组和一个整数目标,返回两个数字的索引,使它们相加为目标。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] sum = new int[2];
        for(int i=0;i<nums.length;i++){
            
            if((nums[i]+nums[i+1]) == target){
               sum[0] = i;
                sum[1]= i+1;
                break;
            }
        }
        return sum;
    }
}

警告:命令行选项已启用安全管理器警告:安全管理器已弃用,将在将来的版本中删除

JAVAlang.ArrayIndexOutOfBoundsException:索引3超出第6行的长度3的界限,解决方案。twoSum

在第54行,驾驶员解决方案。帮手

第87行Driver.main

共有3个答案

陈功
2023-03-14

ArrayIndexOutOfBoundsExctive告诉您,您试图访问超出数组范围的索引。

解决方案是在索引1而不是0处开始循环,并始终将i和i-1相加。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] sum = new int[2];
        for(int i=1;i<nums.length;i++){
            
            if((nums[i-1]+nums[i]) == target){
               sum[0] = i-1;
                sum[1]= i;
                break;
            }
        }
        return sum;
    }
}
冯敏达
2023-03-14

您的问题在于这部分代码:

            if((nums[i]+nums[i+1]) == target){
               sum[0] = i;
                sum[1]= i+1;
                break;
            }

如果for循环一直持续到i=nums。长度i 1将抛出一个越界异常。

万修然
2023-03-14

您正在将i从0循环到nums。长度,然后试图得到nums[i 1],所以很明显你要求的是ArrayIndexOutOfBoundsException。

既然你在查I1,你应该循环到nums。长度-1

编辑:数组索引是从零开始的。它们可以安全地从0索引到长度-1。

 类似资料:
  • **给定一个整数数组和一个整数目标,返回两个数字的索引,使它们相加为目标。 您可以假设每个输入都只有一个解决方案,并且您不能两次使用相同的元素。 您可以以任何顺序返回答案。 例1: 输入:nums=[2,7,11,15],target=9 输出:[0,1] 说明:因为nums[0]nums[1]==9,所以我们返回[0,1]。 例2: 输入:nums=[3,2,4],target=6 输出:[1,

  • 配置根项目“我的应用程序”时出现问题。 未能解析配置“:classpath”的所有工件。无法解析com.android.tools.build:gradle:3.6.2。project:脱机模式下没有com.android.tools.build:gradle:3.6.2的缓存版本。脱机模式下没有com.android.tools.build:gradle:3.6.2的缓存版本。 这是我的错误,我

  • 错误:JAVA_HOME设置为无效目录:/Library/JAVA/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/HOME 请在您的环境中设置JAVA_HOME变量,以匹配您的JAVA安装位置。 更新后,我得到了这种类型的错误。我已经重新安装了jdk,但同样error.Please帮助

  • 我是Springboot的新手,我通过Sping的教程和“https://spring.io/guides”指南来学习。 现在我试图理解并重做教程:“使用MySQL访问数据” 不幸的是,我在Mavenbuild期间出错: 启动ApplicationContext时出错。要显示自动配置报告,请在启用“调试”的情况下重新运行应用程序。2017-12-07 10:26:42.708错误8100---[m

  • 这是我的体格 错误:任务“DemoProject:transformClassesWithJarMergingForDebug”的执行失败。 com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:android/support/v4/提供者/DocumentsContractApi19.

  • 我在Gradle控制台得到这个错误 错误:配置根项目“QuakeReport”时出现问题。 无法解析配置“:classpath”的所有文件。找不到com.android.tools.build:gradle:3.0.0。在以下位置搜索:文件:/applications/Android Studio.app/contents/gradle/m2repository/com/android/tools