Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复java.lang.IndexOutOfBoundsException错误?_Java - Fatal编程技术网

如何修复java.lang.IndexOutOfBoundsException错误?

如何修复java.lang.IndexOutOfBoundsException错误?,java,Java,我要做的是创建一个多边形对象,它由Point2D对象的ArrayList组成,然后找到它的周长 多边形类 您得到的是i+1对象,当您进行迭代时,该对象可能不存在于列表中。例如,如果列表中只有一个元素,则For循环将从0开始,因此对于i==0,您将有如下内容: 但是列表中没有索引为1的元素,因此它将引发异常。有两种方法可以解决此问题: 1您可以将for循环更改为for int i=0;i

我要做的是创建一个多边形对象,它由Point2D对象的ArrayList组成,然后找到它的周长

多边形类

您得到的是i+1对象,当您进行迭代时,该对象可能不存在于列表中。例如,如果列表中只有一个元素,则For循环将从0开始,因此对于i==0,您将有如下内容:

但是列表中没有索引为1的元素,因此它将引发异常。有两种方法可以解决此问题:

1您可以将for循环更改为for int i=0;i 2您可以保持循环不变,但只需添加条件:

if(i == point.size()-1`) {
        perimeter += point.get(i).distance(point.get(0));
}
您得到的是i+1对象,当您进行迭代时,该对象可能不存在于列表中。例如,如果列表中只有一个元素,则For循环将从0开始,因此对于i==0,您将有如下内容:

但是列表中没有索引为1的元素,因此它将引发异常。有两种方法可以解决此问题:

1您可以将for循环更改为for int i=0;i 2您可以保持循环不变,但只需添加条件:

if(i == point.size()-1`) {
        perimeter += point.get(i).distance(point.get(0));
}
point.geti+1在循环的末尾不存在

使用int i=0;ipoint.geti+1在循环的末尾不存在


使用int i=0;i周长+=point.geti.distancepoint.geti+1;为您提供IndexOutOfBounds异常。请提供多边形类的完整代码或至少距离方法。因此,我们可以考虑一种修复代码的方法。permiture+=point.geti.distancepoint.geti+1;为您提供IndexOutOfBounds异常。请提供多边形类的完整代码或至少距离方法。因此,我们可以考虑一种修复代码的方法。也可以使用conditinal?:或甚至是模运算符%s,如…geti+1%point.sizeThanks中的响应和解决方案!在for循环之后,我手动增加了周长。它似乎更符合逻辑。还可以使用条件?:或甚至是模运算符%,如…geti+1%point.sizeThanks中的,用于响应和解决方案!在for循环之后,我手动增加了周长。这似乎更符合逻辑。在周长中缺少从最后一点到第一点的线段,但答案是正确的避免异常在周长中缺少从最后一点到第一点的线段,但答案是正确的避免异常
        perimeter += point.get(0).distance(point.get(0 + 1));
if(i == point.size()-1`) {
        perimeter += point.get(i).distance(point.get(0));
}