返回模型年份介于这两个整数(参数)之间的arraylist中有多少个对象......? java的

时间:2014-11-26 20:48:23

标签: java arraylist

我的编程教授对兰博基尼很着迷,所以我们总是以某种方式完成与他们相关的任务......

LamborghiniCarLot类的实例变量......

getModelYear() //returns the year

private ArrayList <Lamborghini> inventory; //an arraylist made up of Lamborghini(another class) objects

方法编码:

public int howManyBetweenTheseYears(int startYear, int endYear)
{
    //returns the number of lamborghinis in the inventory whose model year is between these numbers,     inclusive
}

如果您还有其他需要,请告诉我。

EDIT1:我试过这个:

public int howManyBetweenTheseYears(int startYear, int endYear)
{
    Iterator<Lamborghini> i = inventory.iterator();
    int n = 0;
    while(i.hasNext()){
        Lamborghini lambo = i.next();

        if((lambo.getModelYear() >= startYear) && (lambo.getModelYear() <= endYear)){
            n++;
        }
    }
    System.out.println(n);
    return n;


}

它与我的其余任务一起编译,但它不适用于测试类,这是预期的。在测试类中,我得到NullPointerException错误。

EDIT2:我已经摆脱了NPE错误并且我的测试类编译了,但是我没有得到正确的返回值:

public int howManyBetweenTheseYears(int startYear, int endYear)
{
    int n = 0;
    for(Lamborghini l : inventory){
        while((l.getModelYear()>=startYear) && (l.getModelYear()<= endYear)){
            n++;
        }
    }
    return n;
}

当startYear是2010而endYear是2012时,返回的int应为3但是为0.测试其他年份,结果始终为0.

1 个答案:

答案 0 :(得分:1)

当你说

private ArrayList<Lamborghini> inventory;

默认为null。所以它和

一样
private ArrayList<Lamborghini> inventory = null;

所以当你尝试迭代它时你得到一个NPE。此外,您应该使用接口类型。所以,把它改成像

这样的东西
private List<Lamborghini> inventory = new ArrayList<>();

但是,您仍需要将Lamborghini(s)添加到inventory