在数组中递增索引的问题

时间:2014-12-14 11:16:27

标签: java arrays

  

问题:

     

你有一个正整数和负整数数组,打印所有子集,它等于零。

我在这里只实现了一个简单的测试用例,我得到的例外是ArrayIndexOutOfBoundsException

请帮助为什么值不会增加。

package app;

public class Array1
{       
    public static void subset(int p[])
    {
        int u = 0;
        int s[] = new int[p.length];
        if (p[0] < 0)
            for (int i=0;i<p.length;i++)
            {
                for (int j = 0; j < p.length; j++) {
                    int k = p[i] + p[j];
                    if (k == 0)
                    {
                        System.out.println(p[i]);
                        System.out.println(p[j]);
                        s[u] = p[i];
                        u++; // Why u value is not incremented?
                        System.out.println(s[u]);
                        s[u] = p[j];
                        u++; // Why u value is not incremented?
                        System.out.println(s[u]);
                    }
                }   
            }
        for(int i = 0; i < s.length; i++)
            System.out.println(s[i]);
    }

    public static void main(String s[])
    {
        subset(new int[] {-1, -2, -3, -4, 4, 3, 2, 1});
    }
}

1 个答案:

答案 0 :(得分:1)

问题是,int s[]=new int[p.length];因为对的数量可以更多(输入数组长度本身)是你获得ArrayIndexOutOfBoundsException的原因。

您可以使用动态列表来实现此目的:

List<Integer> s = new ArrayList<Integer>();
// s.add(<elem>); // no need for variable u - increment :)