2017-05-06 74 views
0

我的課Test2有一個返回區域的方法。它接受可變數量的參數(Varargs),我試圖使用for循環將替代可變參數添加到數組lengthOfSidebreadthOfSide中,但我得到的是ArrayOutofBoundException。爲什麼我得到這個,我該如何解決它?Test2陣列初始化錯誤

class Test2 { 
    public double returnArea(double... corner){ 
     double[] lengthOfSide = {}; 
     double[] breadthOfSide = {}; 
     int i = 0; 

     for(double x : corner){ 
      lengthOfSide[i] = x; 
      breadthOfSide[i] = x; 

      System.out.println(lengthOfSide[i]); 
      System.out.println(breadthOfSide[i]); 
      i++; 
     } 
    } 
} 

public class Test1 { 
    public static void main(String args[]){ 
     Test2 total = new Test2(); 
     total.returnArea(34.2,22.3,332.2,223.3,22.4); 
    } 
} 

回答

4

Java數組具有固定長度。您目前創建了兩個長度爲0的數組。更改

double[] lengthOfSide = {}; 
double[] breadthOfSide = {}; 

喜歡的東西

double[] lengthOfSide = new double[corner.length]; 
double[] breadthOfSide = new double[corner.length]; 
+0

謝謝!得到那 – Novice

0

當你創建一個你應該指定數組的長度。在此之後,您不能更改數組長度。在你的例子中有2個長度爲0的數組。

+0

感謝您的幫助 – Novice

1

你基本上是試圖修改現有的數組這是不允許的...

陣列在Java中是固定大小,你已經創建了他們之後,你無法修改它們。

基本上,

double[] lengthOfSide = {}; 
double[] breadthOfSide = {}; 

此線爲您創建的陣列(空數組)。 其中在循環中,您試圖將值分配給不存在的數組中的索引。

lengthOfSide[i] = x; 
breadthOfSide[i] = x; 

結果是EXCETION

如果你想達到我認爲正確的你應該初始化它到你想要的長度即ie。 corner.length

所以它應該是,

double[] lengthOfSide = new double[corner.length]; 
double[] breadthOfSide = new double[corner.length]; 

此外,如果你還想去具有相同流動嘗試使用arraylist爲目的的考慮。

+0

感謝您的幫助 – Novice