我希望我能清楚地解释我的问题: 有三个班级。
获得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.我该如何修复它?
答案 0 :(得分:1)
非常奇怪:
public void addLamborghini(Lamborghini newLamborghini) {
if (inventory != null && newLamborghini != null && inventory.size() > 0) {
for (Lamborghini lambo : inventory) {
if (lambo == null) {
inventory.add(newLamborghini);
}
}
}
}
让我们摆脱困境。
inventory
不是null
... newLamborghini
不是null
... null
... newLamborghini
添加到广告资源中。几乎所有这些都是不必要的,这就是为什么你不插入任何内容的主要原因 - 你的收藏开始为空。即使它不是,也不要向它添加任何null
元素以满足内部foreach循环。
您可以将其简化为更合理的检查,以确定您要插入的元素是null
,以及您插入的集合是否为null
。
if(inventory != null && newLamborghini != null) {
inventory.add(newLamborghini);
}
如果您急切地初始化了inventory
集合(通过撰写ArrayList<Lamborghini> inventory = new ArrayList<>();
),则可以避免null
对inventory
进行检查。
答案 1 :(得分:0)
您应该在LamborghiniCarLot类中添加以下两个方法。它应该工作。
public void setLotName(String lotName) {
this.lotName = lotName;
}
public void addLamborghini(Lamborghini lamborghini) {
inventory.add(lamborghini);
}