【问题标题】:Issue with ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException 问题
【发布时间】:2011-10-19 20:55:32
【问题描述】:

运行此代码会在该行给我一个数组越界异常:

int sum = array[k]+array[l]; //sum of l and k

...应该是一个简单的修复,但我不知道是什么原因造成的,因为我正在使用 array.length 来绑定循环。有人可以帮忙吗?

附:作为记录,此代码应该在 int 数组中搜索与目标 int 相等的 int 对或单个 int。它仅使用 println 就可以工作,但我正在尝试将与目标相加的数字放入向量中。

public Vector<Vector<Integer>> subsetSum(int[] array, int target) {
    //creates vectors, adds inner vector to another vector
    outer = new Vector<Vector<Integer>>();
    inner = new Vector<Integer>();
    outer.add(inner);

    for (int k = 0; k <= array.length; k++) {
        for (int l = 0; l <= array.length; l++) {
            int sum = array[k]+array[l]; //sum of l and k
            int i = 0;

            if (sum == target) {

                inner.add(i, array[l]);
                inner.add(i, array[k]);

                i++;

                //prints combination
                System.out.println(array[l]+"+"+array[k]+"="+target);
            }
            if (k == target) {
                inner.add(i, array[k]);
                i++;
                //prints if int equals target
                System.out.println(k+"="+target);
            }
            if (l == target) {
                inner.add(i, array[l]);
                i++;
                //prints if int equals target
                System.out.println(l+"="+target);
            }
        }
    }
    //return combinations that add up to target in vector form
    System.out.println(outer);
    return outer;
}

【问题讨论】:

    标签: java arrays vector indexoutofboundsexception


    【解决方案1】:

    您需要在 for 循环中使用“

    由于数组的第一个位置是0,所以最后一个位置是length-1。发生的情况是,当您到达最后一次迭代时,索引已经超出了数组的范围。

    例如,如果你有一个数组:

    array = [0,1,2,3] 最后一次迭代将是array[4],即数组的长度,超出范围。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        将循环更改为:

        for (int k = 0; k < array.length; k++)
        

        for (int l = 0; l < array.length; l++)
        

        由于数组是从 0 开始的,因此您希望比长度小 1。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-22
          • 2019-04-20
          • 1970-01-01
          • 2020-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多