如何在Java中一次迭代4个元素?

时间:2016-03-28 15:18:51

标签: java arrays

我有一个程序输入:
  10 8 1 1 4 2 2 4 6 4 4 2 5 0 4 3 4 5 5 2 6 1 3 5 4 2 6 4 6 5 7 2 6 1
前2个元素的高度和宽度,剩下的是构成线段的点的坐标。 我有这个方法:

 public static String[] trees(int[] input) 
    {
        W = input[0];
        H = input[1];

        int x1, x2, y1, y2;

        for (int i = 2; i < input.length; i+=4) 
        {
            x1 = input[i];
            x2 = input[i + 1];
            y1 = input[i + 2];
            y2 = input[i + 3];

            StdOut.println(x1 + x2 + y1 + y2);
        }
        return null;
    }

它只是一个原型,但截至目前我只想迭代input数组。我得到了ArrayIndexOutOfBoundsException 注意:W和H是int全范围变量

2 个答案:

答案 0 :(得分:1)

应该如下。由于您要添加i = i + 4,因此需要遍历到最后4个元素。

 public static String[] trees(int[] input) 
{
    W = input[0];
    H = input[1];

    int x1, x2, y1, y2;

    for (int i = 2; i < input.length-3; i+=4) 
    {
        x1 = input[i];
        x2 = input[i + 1];
        y1 = input[i + 2];
        y2 = input[i + 3];

        StdOut.println(x1 + x2 + y1 + y2);
    }
    return null;
}

答案 1 :(得分:0)

提供此输入后没有问题。如果你的输入以你的坐标中少于4个元素的方式输入,例如input = {10,8,1,1,4},那么你的情况会出现索引越界 - 现在这是一个问题在你的for循环中,你想要i + 3,这显然在你的输入中没有。

希望它有所帮助!!