对另一个类

时间:2015-10-09 05:27:07

标签: java methods counter

我目前正在研究基于java的应用程序。我有一个名为Passenger的类,它包含一个名为getCheckedBaggage()的服务,该服务查看数据文件并查看它使用此服务找到客户的次数。我还有另一个名为Invoice的课程,您可能认为打印出大量客户的订单。我目前正在研究一种名为getCheckedBaggageFee()的方法,它最终会返回一个双倍的服务费用。

  

对于一个袋子,成本为25.对于每个额外的袋子,它是35.00。因此算法应该类似于x = 25 + 35(其他包被检查)

我知道为了获得我想要的东西,代码应该如下所示:

public double getCheckedBaggageFee(Passenger p){
    double baggage = 0;
    if(p.contains(checkedBaggage)++){
        baggage = 25 + 35(++);
    }else{
        baggage = 25;
    }
    return baggage;
}

我的问题是,我知道代码不应该如上所示,它应该使用某种计数器方法,那么我需要添加什么才能计算?

2 个答案:

答案 0 :(得分:1)

从你的问题不是很清楚,但这里有一些代码:

public double getCheckedBaggage(Passenger p){
    double baggage = 0;
    int noOfBaggage = p.getNoOfBaggage();// You have to write method in your class which returns no of baggage 
    if(noOfBaggage > 0){
        baggage = 25 + (35 * (noOfBaggage-1));
    }
    return baggage;
}

答案 1 :(得分:1)

看起来您应该将问题分成两部分:查找托运行李的数量,然后计算成本。为清楚起见,理想情况下将这些方法放在单独的方法中:

int numberOfCheckedBags = getBagsCheckedBy(passenger);
return checkedBaggageFee(numberOfCheckedBags);

private int getBagsCheckedBy(Passenger passenger) {
    return bags.stream().filter(bag -> bag.wasCheckedBy(passenger)).count();
}

private float checkedBaggageFee(int numberOfCheckedBags) {
    if (numberOfCheckedBags > 0)
        return 25.0f + 35.0f * (numberOfCheckedBags - 1);
    else 
        return 0.0f;
}

我已经使用Java 8流进行检查,并在wasCheckedBy类中假设了一个Bag方法,但迭代也很容易。我更有意义地获取有关签入Bag而不是Passenger的信息,但我想这将取决于您的域名。