【问题标题】:How to use array correctly如何正确使用数组
【发布时间】:2016-09-03 09:49:50
【问题描述】:

我正在尝试在 Java 中初始化一个数组并在其中插入一些值,但我得到了超出范围的异常。这是代码

int xPoints[] = new int[]{};
int i = 0;
for(Edge e : myVectorOfEdges){
    xPoints[i] = e.start;
    i++;

}

我必须使用这种类型的数据结构,因为我正在使用只接受 int[] 类型的多边形。

【问题讨论】:

  • 您的 xPoints 初始化不正确。试试这个:stackoverflow.com/questions/363681/…
  • myVectorOfEdges 是什么类型的?
  • @Andrew 它是 Edge 类型,一个创建的类,它在其中存储起点和终点索引

标签: java arrays indexoutofboundsexception


【解决方案1】:
int xPoints[] = new int[myVectorOfEdges.length];
    int i = 0;
    for(Edge e : myVectorOfEdges){
        xPoints[i] = e.start;
        i++;

    }

【讨论】:

    【解决方案2】:

    只需使用慢速版本:

        int[] xPoints = myVectorOfEdges.stream().mapToInt(e -> e.start).toArray();
    

    【讨论】:

    • 您确定myVectorOfEdges 不是数组吗?
    【解决方案3】:

    您已将xPoints 初始化为一个空数组,因此任何访问其(不存在的)元素之一的尝试都将导致ArrayIndexOutOfBoundsException。相反,您应该将其初始化为与您正在迭代的 myVectorOfEdges 相同的大小:

    int xPoints[] = new int[myVectorOfEdges.length];
    

    【讨论】:

    • 这个实现的问题是向量的长度比我实际需要使用的要大得多,因为它包含了我输入文件中的所有边,而我需要遍历它并寻找多边形,然后为我找到的每个多边形创建 xPoints[]
    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多