2016-05-08 25 views
2

我想初始化一個數組並在Java中插入一些值,但是我超出了界限例外。這是代碼如何正確使用數組

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

} 

我必須使用此類型的數據結構,因爲我與只接受int[]型多邊形工作。

+2

xPoints的初始化不正確。試試這個:http://stackoverflow.com/questions/363681/generating-random-integers-in-a-specific-range – gtwd

+0

什麼類型的myVectorOfEdges是它? – Andrew

+0

@Andrew它是邊緣類型,創建一個類,它存儲起始點和終點索引 – Keselme

回答

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

    } 
0

只要用慢版:

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

您確定'myVectorOfEdges'不是數組嗎? – Andrew

2

您已經初始化xPoints爲空數組,所以任何試圖訪問其(不存在)的元素將導致ArrayIndexOutOfBoundsException之一。相反,您應該將其初始化爲您正在迭代的myVectorOfEdges的大小:

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

這個實現的問題是向量上的長度比我實際需要使用的長度大得多,因爲它包含了我輸入文件中的所有邊,而我需要遍歷它並查找多邊形,而不是創建xPoints []對於我找到的每個多邊形 – Keselme

相關問題