Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何正确使用数组_Java_Arrays_Indexoutofboundsexception - Fatal编程技术网

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

我试图在Java中初始化一个数组并向其中插入一些值,但我遇到了越界异常。这是密码

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[]