所以我想要做的就是我允许我的BargainCustomer花费的价值,并让他/她购买他们在该价格下的列表中看到的第一辆车。然后拿剩余的钱购买他们能做的任何功能。但是,我不记得如何从我的其他方法中为剩余的钱调用我的价值。这是我的代码:
import java.util.ArrayList;
public class BargainCustomer implements Customer
{
public Car purchase(ArrayList<Car> listOfCars)
{
int moneyToSpend = 35000;
int moneyLeft = 0;
int indexLocation = 0;
for (int i = 0; i < listOfCars.size(); i++)
{
if (listOfCars.get(i).getBasePrice()<moneyToSpend)
{
moneyLeft=moneyToSpend-listOfCars.get(i).getBasePrice();
indexLocation = i;
}
}
return listOfCars.get(indexLocation);
}
public void upgrade(Car g)
{
int featuresMoney = moneyLeft;
for (int i = 0; i < g.getFeatures().size(); i++)
{
moneyLeft-=g.getFeatures().get(i).getCost();
if (moneyLeft>=0)
{
g.getFeatures().get(i).purchase();
}
}
}
}
理想情况下,买方应该只用剩余的钱购买他们能买得起的东西。
答案 0 :(得分:0)
取决于你的逻辑,最好只是串联呼叫:
import java.util.ArrayList;
public class BargainCustomer implements Customer
{
public Car purchase(ArrayList<Car> listOfCars)
{
int moneyToSpend = 35000;
int moneyLeft = 0;
int indexLocation = 0;
for (int i = 0; i < listOfCars.size(); i++)
{
if (listOfCars.get(i).getBasePrice()<moneyToSpend)
{
moneyLeft=moneyToSpend-listOfCars.get(i).getBasePrice();
indexLocation = i;
}
}
return upgrade(listOfCars.get(indexLocation), moneyLeft);
}
public void upgrade(Car g, int moneyLeft)
{
int featuresMoney = moneyLeft;
for (int i = 0; i < g.getFeatures().size(); i++)
{
moneyLeft-=g.getFeatures().get(i).getCost();
if (moneyLeft>=0)
{
g.getFeatures().get(i).purchase();
}
}
}
}
这只会立即为您提供具有所有功能的汽车,如果您需要介于两者之间的步骤,您可以使用类变量,或者再次计算它。自从您归还汽车后,您可以从moneyToSpend
中减去汽车价格P.S。你确定,在你的情况下,int是正确的选择吗?它不会处理逗号值。根据货币的不同,价格几乎没有分数。