我的测试方法在运行时返回null

时间:2014-03-13 21:22:39

标签: java arrays constructor

道歉,如果这个问题的答案显而易见!我试图在一个类的构造函数中用一个数字数组初始化我的字段数,然后在我的测试类中调用它并将其显示为字符串,但它不断返回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++;) 
在?中? 提前谢谢!

3 个答案:

答案 0 :(得分:2)

问题是你的for循环使用你的初始化空ArrayList作为大小。

将循环更改为:

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

希望有所帮助!

答案 1 :(得分:2)

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

答案 2 :(得分:0)

另请注意,有一种更简单(通常是首选)的方式来迭代您的数组:

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

(我将其作为评论发布,但会丢失代码格式)。