我的编程教授对兰博基尼很着迷,所以我们总是以某种方式完成与他们相关的任务......
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.
答案 0 :(得分:1)
当你说
时private ArrayList<Lamborghini> inventory;
默认为null
。所以它和
private ArrayList<Lamborghini> inventory = null;
所以当你尝试迭代它时你得到一个NPE。此外,您应该使用接口类型。所以,把它改成像
这样的东西private List<Lamborghini> inventory = new ArrayList<>();
但是,您仍需要将Lamborghini
(s)添加到inventory
。