2014-03-13 62 views
0

如果對這個問題的答案顯而易見,請道歉!我試圖在一個類的構造函數中初始化我的字段數字,然後在我的測試類中調用它,並將其顯示爲一個字符串,但它一直返回null ....任何幫助將不勝感激!當我運行它時,我的測試方法返回null

這是我的類具有構造函數:

public class NumerbList implements Number { 
    ArrayList<Number> numbers = new ArrayList<Number>(); 

    //constructor taking array of type double as parameter 
    public NumberList(Double[] numberlist){ 
     for(int i=0; i<numbers.size(); i++){ 
      NumberDouble numberd = new NumberDouble(numberlist[i]); 
      numbers.add(numberd); 
     } 
    } 

和測試類創建NumberList類的對象

public class Test { 
    public static void main(String[]args){ 
     Double[] d = {2.4, 3.6, 4.3, 5.1}; 
     NumberList numbers = new NumberList(d); 
     numbers.neg(); 

     System.out.print(numbers.asString()); 
    } 
} 

對不起負如下:

public void neg(){ 
    for(int i=0; i < numbers.size(); i++){ 
      numbers.get(i).neg(); 
    } 
} 

asString是:

@Override 
public String asString(){ 
    return numbers.toString(); 
} 

我應該把

 for(int i=0; i < numberlist.length(); i++;) 

在負? 在此先感謝!

+0

你還沒有顯示'neg()'和'asString()'做了什麼。 –

+2

請注意,當你調用你的構造函數時,size()是0,因爲你的列表是空的。因此你沒有增加任何東西。將循環的條件更改爲'我

回答

2

問題是您的for循環正在使用初始化空ArrayList作爲大小。

你的循環改成這樣:

for (int i = 0; i < numberlist.length; i++) { 
    // your loop logic here 
} 

希望幫助!

2

for(int i=0; i<numbers.size(); i++){應該for(int i=0; i<numberList.length; i++){

0

還要注意的是有你的數組遍歷一個更簡單的(通常爲首選方法):

for (Double number : numberlist) { 
    // your loop logic here 
} 

(我會發布,作爲一個評論,但它會丟失代碼格式)。

相關問題