根据余数计算数组大小

时间:2016-06-24 21:54:40

标签: java

有一个建筑工地,还有工作要做。我们需要一定数量的工人来做这些工作。每个工人都有相同的工作能力,他们不能处理超过这个限制。因此,对于给定数量的工作,所需的工人数量是:

  • 如果worksworkerCapacity的整数倍,那么workers将是works / workerCapacity的简单除法。
  • 如果works不是workerCapacity的整数倍,那么在除法之后,我们需要递增一个。例如。如果容量= 10,则100件工件需要10名工人,但101件工件需要11名工人。

这是我的实施:

public int getNumWorkers(int works) {
    int workers = works / workerCapacity;
    if (works % workerCapacity != 0) {
        workers++;
    }
    return workers;
}

我的问题是:我们可以将2-5行简化为一行吗?

4 个答案:

答案 0 :(得分:5)

是的,你可以。在将其分开之前添加workerCapacity-1,如下所示:

return (works+workerCapacity-1) / workerCapacity;

如果workerCapacity均匀地划分works(即works % workerCapacity == 0),则添加workerCapacity-1将无法更改答案。如果余数高于零,则添加workerCapacity-1会将除法结果增加一。

答案 1 :(得分:1)

只需使用

return (int) Math.ceil((double) works / workerCapacity);

Math.ceil将任意分数四舍五入到下一个整数,并且明确表示将workerCapacity - 1添加到workers

答案 2 :(得分:-1)

请使用此

return(int)(Math.ceil(works / workCapacity));

如果浮点数不是

,则Math.ceil方法返回下一个整数

答案 3 :(得分:-1)

你可以用吗?运算符,所以函数看起来像:

public int getNumWorkers(int works) {
    return works % workerCapacity == 0 ? works/workerCapacity : 
    (works/workerCapacity+1)
}

假设workerCapacity是在此范围内声明的int变量。