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

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

慕容昊焜
2023-03-14

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

您可以假设每个输入都只有一个解决方案,并且您不能两次使用相同的元素。

您可以以任何顺序返回答案。

例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,2]

例3:

输入:Nums=[3,3],目标=6

输出:[0,1]

**

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号线,司机。主要的

共有3个答案

韩羽
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

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

解决方案是使用两个循环,因为否则你只是在数组中彼此相邻的数字相加。

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

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

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

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

 类似资料:
  • 给定一个整数数组和一个整数目标,返回两个数字的索引,使它们相加为目标。 警告:命令行选项已启用安全管理器警告:安全管理器已弃用,将在将来的版本中删除 JAVAlang.ArrayIndexOutOfBoundsException:索引3超出第6行的长度3的界限,解决方案。twoSum 在第54行,驾驶员解决方案。帮手 第87行Driver.main

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

  • 配置根项目“我的应用程序”时出现问题。 未能解析配置“: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