将更改的值从一种方法转移到另一种方法

时间:2017-01-30 06:50:19

标签: java

所以我想要做的就是我允许我的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();
           }
       }
   }
}

理想情况下,买方应该只用剩余的钱购买他们能买得起的东西。

1 个答案:

答案 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是正确的选择吗?它不会处理逗号值。根据货币的不同,价格几乎没有分数。