有一个建筑工地,还有工作要做。我们需要一定数量的工人来做这些工作。每个工人都有相同的工作能力,他们不能处理超过这个限制。因此,对于给定数量的工作,所需的工人数量是:
works
是workerCapacity
的整数倍,那么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行简化为一行吗?
答案 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变量。