我有一个程序输入:
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
全范围变量
答案 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,这显然在你的输入中没有。
希望它有所帮助!!