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

在Java中,如何在数组中一次迭代4个元素?,java,arrays,Java,Arrays,我有一个程序的输入: 108 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 其中前两个元素是高度和宽度,其余元素是构成线段的点的坐标。 我有这个方法: public static String[] trees(int[] input) { W = input[0]; H = input[1]; int x1, x2, y1, y2;

我有一个程序的输入:
108
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

其中前两个元素是高度和宽度,其余元素是构成线段的点的坐标。 我有这个方法:

 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;
    }
公共静态字符串[]树(int[]输入)
{
W=输入[0];
H=输入[1];
int-x1,x2,y1,y2;
对于(int i=2;i
这只是一个原型,但现在我只想迭代
输入
数组。我正在获取
ArrayIndexOutOfBoundsException


注意:W和H是
int
classwide变量

如下所示。由于要添加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;
}
公共静态字符串[]树(int[]输入)
{
W=输入[0];
H=输入[1];
int-x1,x2,y1,y2;
对于(int i=2;i
如果没有问题,则使用此输入。如果您的输入以这样一种方式出现,即在为eg input={10,8,1,1,4}设置的坐标中,您的元素少于4,则会发生索引越界-现在这是一个问题,因为在for循环中,您需要i+3,这显然在您的输入中不可用


希望能有帮助

由于循环转到input.length-1,但您尝试访问输入[i+3]时出现越界异常,此时将输入[input.length+2],末端有3个位置。这意味着数组的长度不完全是2+4*n。也许你应该使用宽度和高度来做某事。正如@PeterLawrey所说,你的
输入的长度不正确。证明:使用您的数据运行。检查你的假设。@PeterLawrey是的,我必须使用高度和宽度来做checks@Andreas我有点困惑,我以前打印过数组,它包含了所有元素。。或者我遗漏了一些非常明显的东西?如果
输入,则更改为
length-3
没有任何区别。length
为2+4*n。问题是,
input
不包含预期的内容。@Andreas它会使错误消失,但不会修复输入。;)@PeterLawrey为True,但使错误消失,而不是处理整个数组,也是错误的。至少有了这个错误,您知道有些地方出了问题,而不是默默地错误地处理数据。“在这种情况下,错误是你的朋友。”安德烈亚斯同意。原始代码更好,因为它假定输入必须正确。