我希望我能清楚地解释我的问题: 共有三个类(class)。
类
Lamboghini
正在获取modelYear
、modelName
、horsepower
和boolean
.类
LamboghiniCarLot
具有数组列表库存(向其中添加一些lamboghini
元素)。LamboghiniDealershipGroup
类,其中包含数组列表 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。我该如何修复它?
最佳答案
这非常很奇怪:
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
.
关于java - 无法计算包含两个 arrayllist 的 arraylist 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838174/