【发布时间】:2016-11-28 06:17:50
【问题描述】:
我希望我能清楚地解释我的问题: 有三个班。
类
Lamboghini正在获取modelYear、modelName、horsepower和boolean。类
LamboghiniCarLot有一个 arraylist 库存(添加一些lamboghini元素到它)。类
LamboghiniDealershipGroup具有arraylist carLots。 现在,在LamboghiniDealershipGroup类中,我尝试创建一个方法public int getTotalInventoryCount();但是,我无法正确计算库存。我的输出一直是 0。我想这可能是因为我添加到arraylist的方式是错误的。但我不知道如何解决这个问题。
public Lamborghini(int modelYear, String modelName, double horsepower, boolean isRearWheelDrive)
{
setModelYear(modelYear);
setModelName(modelName);
setHorsepower(horsepower);
setIsRearWheelDrive(isRearWheelDrive);
}
public class LamborghiniCarLot
{
private String lotName;
private ArrayList<Lamborghini> inventory;
/**
* creates the inventory ArrayList object;
* the inventory remains empty (no Lamborghini objects are added when this constructor is called)
*/
public LamborghiniCarLot()
{
inventory = new ArrayList<Lamborghini>();
}
/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public LamborghiniCarLot(String lotName)
{
setLotName(lotName);
inventory = new ArrayList<Lamborghini>();
inventory.add(new Lamborghini(1965, "350GT", 365.3, true));
inventory.add(new Lamborghini(1966, "400GT 2+2", 366.3, false));
inventory.add(new Lamborghini(1967, "MIURA", 367.3, true));
inventory.add(new Lamborghini(1968, "espada", 368.3, false))
}
public void setLotName(String lotName)
{
if(lotName != null)
{
if(lotName.equals("Taylor's Used Lambos"))
{
this.lotName = "Jason's Used Lambos";
}else
{
this.lotName = lotName;
}
}
}
public void addLamborghini(Lamborghini newLamborghini)
{
if(inventory != null && newLamborghini != null && inventory.size() > 0)
{
for(Lamborghini lambo : inventory)
{
if(lambo == null)
{
inventory.add(newLamborghini);
}
}
}
}
public ArrayList<Lamborghini> getInventory()
{
return inventory;
}}
然后,第三节课。
public LamborghiniDealershipGroup(String dealershipGroupName)
{
setDealershipGroupName(dealershipGroupName);
carLots = new ArrayList<LamborghiniCarLot>();
//Create the first car lot
LamborghiniCarLot carlot1 = new LamborghiniCarLot();
carlot1.setLotName("Jason's vintage lambos.");
carlot1.addLamborghini(new Lamborghini(1965, "350GT", 365.3, true));
carlot1.addLamborghini(new Lamborghini(1966, "400GT 2+2", 366.3, false));
carlot1.addLamborghini(new Lamborghini(1967, "MIURA", 367.3, true));
//Create the second car lot
LamborghiniCarLot carlot2 = new LamborghiniCarLot();
carlot2.setLotName("Taylor's brand new lambos.");
carlot2.addLamborghini(new Lamborghini(2006, "gallardo", 506.3, true));
carlot2.addLamborghini(new Lamborghini(2007, "gallardo", 507.3, true));
//Add them to the arraylist
carLots.add(carlot1);
carLots.add(carlot2);
}
我的方法在这里:
public int getTotalInventoryCount()
{
int count = 0;
for(LamborghiniCarLot c : carLots)
{
count += c.getInventory().size();
}
return count;
}
该方法总是得到 int 0。我该如何解决它?
【问题讨论】:
-
LamborghiniCarLot类缺少几个方法(addLamborghini(...)和setLotName(...))。你也可以发布这些吗? -
addLamborghini()是做什么的?我注意到您有两个LamborghiniCarLot的构造函数,一个带有添加内容的名称参数,一个没有添加内容的参数。您是否还有两个LamborghiniDealershipGroup的构造函数,而您正在调用另一个不添加任何内容的构造函数?另外,请阅读“How to create a Minimal, Complete, and Verifiable example”。 -
我确实有这些方法,在这里我已经重新发布了。请帮忙
-
问题似乎出在
addLamborghini(...)方法上,具体来说就是inventory.size() > 0这个条件。inventory列表的大小为零,因为您使用的是无参数构造函数(不向列表添加项目的构造函数)。