Java 如何正确使用数组
我试图在Java中初始化一个数组并向其中插入一些值,但我遇到了越界异常。这是密码Java 如何正确使用数组,java,arrays,indexoutofboundsexception,Java,Arrays,Indexoutofboundsexception,我试图在Java中初始化一个数组并向其中插入一些值,但我遇到了越界异常。这是密码 int xPoints[] = new int[]{}; int i = 0; for(Edge e : myVectorOfEdges){ xPoints[i] = e.start; i++; } 我必须使用这种类型的数据结构,因为我使用的多边形只接受int[]类型。只需使用慢速版本: int xPoints[] = new int[myVectorOfEdges.length]; i
int xPoints[] = new int[]{};
int i = 0;
for(Edge e : myVectorOfEdges){
xPoints[i] = e.start;
i++;
}
我必须使用这种类型的数据结构,因为我使用的多边形只接受
int[]
类型。只需使用慢速版本:
int xPoints[] = new int[myVectorOfEdges.length];
int i = 0;
for(Edge e : myVectorOfEdges){
xPoints[i] = e.start;
i++;
}
int[] xPoints = myVectorOfEdges.stream().mapToInt(e -> e.start).toArray();
您已将
xPoints
初始化为空数组,因此任何尝试访问其中一个(不存在)元素的行为都将导致ArrayIndexOutOfBoundsException
。相反,您应该将其初始化为与正在迭代的myVectorOfEdges
相同的大小:
int xPoints[] = new int[myVectorOfEdges.length];
您对xPoints的初始化不正确。试一试:它是什么类型的
myVectorOfEdges
呢?@Andrew它的Edge类型,一个创建的类,它在其中存储起点和终点索引。你确定myVectorOfEdges
不是数组吗?这个实现的问题是向量的长度比我实际需要使用的长度大得多,因为它包含输入文件中的所有边,而我需要遍历它并查找多边形,然后为找到的每个多边形创建xPoints[]