我目前正在研究基于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;
}
我的问题是,我知道代码不应该如上所示,它应该使用某种计数器方法,那么我需要添加什么才能计算?
答案 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
的信息,但我想这将取决于您的域名。