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

Java 将更改的值从一种方法转移到另一种方法,java,Java,因此,我试图做的是,以我允许我的讨价还价客户花费的价值,让他/她以该价格购买他们在列表中看到的第一辆车。然后把剩下的钱拿去买他们能买的任何功能。然而,我不记得如何从我的其他方法中为剩余的钱调用我的值。这是我的密码: import java.util.ArrayList; public class BargainCustomer implements Customer { public Car purchase(ArrayList<Car> listOfCars) {

因此,我试图做的是,以我允许我的讨价还价客户花费的价值,让他/她以该价格购买他们在列表中看到的第一辆车。然后把剩下的钱拿去买他们能买的任何功能。然而,我不记得如何从我的其他方法中为剩余的钱调用我的值。这是我的密码:

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();
           }
       }
   }
}
import java.util.ArrayList;
公共类BargainCustomer实现客户
{
公共汽车购买(ArrayList of Cars)
{
int moneyToSpend=35000;
int moneyLeft=0;
int indexLocation=0;
for(int i=0;i

理想情况下,买家只能用剩下的钱买他们能买得起的东西。

根据您的逻辑,最好是连锁电话:

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();
           }
       }
   }
}
import java.util.ArrayList;
公共类BargainCustomer实现客户
{
公共汽车购买(ArrayList of Cars)
{
int moneyToSpend=35000;
int moneyLeft=0;
int indexLocation=0;
for(int i=0;i
这将立即为您提供具有所有功能的汽车,如果您需要中间的步骤,您可以使用一个类变量,或者再次计算它。既然你还了车,你就可以从钱中减去汽车价格


另外,你确定在你的情况下int是正确的选择吗?它不会处理逗号值。根据货币的不同,价格很少没有分数。

moneyLeft
声明移动到类级别
moneyToSpend
可能也属于那里。的确,你只需要其中一种方法。是的,但这并不能给我第一种方法用于第二种方法后剩余的钱的新价值。我希望moneyLeft是moneyToSpend的值减去汽车的基本价格,这样moneyLeft就可以是第二种方法中汽车功能的钱。是的,它是……问题是它不会导致任何功能被购买,尽管我知道事实上有些应该在剩余金额内。可能有很多原因,首先是你可能误解了我的建议,最后是代码中的错误,在检查功能成本是否合理之前先减去功能成本。不,这只会导致一个错误,即“BargainCustomer不是抽象的,并且不会覆盖Customer中的抽象方法升级(Car)(我忘了这是我界面中的抽象)在这种情况下,出于某种原因,所有的价格都是整数。我只是按照我所看到的去做,因为某些原因,我不允许考虑使用double。注意:“整数”货币是处理货币时防止舍入错误的常用方法。这就是为什么我把它作为一个问题说出来,只是问他是否确定