【问题标题】:using the count method on a method from another class在另一个类的方法上使用 count 方法
【发布时间】:2015-10-09 05:27:06
【问题描述】:

我目前正在开发一个基于 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;
}

我的问题是,我知道代码不应该像上面那样,它应该使用某种计数器方法,那么我需要添加什么才能进行计数?

【问题讨论】:

  • 你的问题不是很清楚。您的乘客类是什么样的(“包含”是做什么的?)?什么是“托运行李”?为什么是 ++?
  • checkedBaggage 是什么以及 contains 在您的 Passenger 课程中做什么
  • 您说getCheckedBaggageFee 应该确定费用,但为什么您的示例方法称为getCheckedBaggage 做其他事情(并且应该在getCheckedBaggageFee [提示;)] 中使用)?
  • checkedBaggage in the Passenger 是一个对象,它保存了在数据文件中找到服务的次数(在上面的问题中解释),乘客中的包含基本上是说乘客是否有托运行李,那么……这就是它所说的。此外,上面的代码 sn-p 就像一个伪代码。这就是我假设它的样子,但正如那句老话所说,他们给猫剥皮的方法不止一种
  • @Tom 这实际上是我的一个错字。在我的实际代码中,它被称为 getCheckedBaggageFee,但我在提出问题时一定忘记了费用部分。感谢您的收看,我很感激

标签: java methods counter


【解决方案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;
}

【讨论】:

  • @Tom Ohh 抱歉,我的错。我的意思是类似于上面的内容,请再次查看答案
  • 关于getCheckedBaggagegetNoOfBaggage:我猜是OP把他的示例方法命名错了,因为他在文中说,计算费用的方法叫getCheckedBaggageFee和方法计算行李的,称为getCheckedBaggage。但这只是猜测:)。
  • @Tom 可能是,让他决定 ;) 。并感谢您指出我的错误:)
  • 不用担心 :)。顺便说一句,他决定:P。
【解决方案2】:

看来您应该将问题分为两部分:查找托运行李的数量,然后计算费用。为了清楚起见,最好将它们放入单独的方法中:

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 流进行检查,并在您的 Bag 类中假设了一个 wasCheckedBy 方法,但它与迭代一样容易。拥有Bag 而不是Passenger 签入的信息对我来说更有意义,但我想这将取决于您的域。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多