考虑到开始日(星期三= 4)和一个月中的天数(31),找到一个月日历需要的星期行数的优雅方法是什么?
对于当前月份(startDay = 4,daysInMonth = 31),它将为5.但如果daysInMonth = 33,则为6行。
这并不是很有效:
int numRows = (startDay+daysInMonth)/daysInWeek;
if ((startDay+daysInMonth) % daysInWeek != 0) {
numRows++;
}
答案 0 :(得分:2)
实际上,我认为你的原始算法是正确的,只需要在做模数daysInWeek时减去1。
daysInWeek = 7
startDay = 3 # Zero based day of week array, 3 = Wednesday
daysInMonth = 31
numRows = (startDay+daysInMonth)/daysInWeek
if ((startDay+daysInMonth - 1) % daysInWeek != 0)
numRows += 1
end
print numRows
正确显示6。 (顺便说一句,为什么你需要33个月一个月?)33天一个月应该是6行(如果有这样的话)。
答案 1 :(得分:1)
int temp = daysInMonth;
temp = temp - (7 - startDay);
int result = ceiling(temp / 7) + 1;
答案 2 :(得分:1)
只需更改为
int numRows = (startDay + daysInMonth - 1) / daysInWeek;
if ((startDay+daysInMonth - 1) % daysInWeek != 0) {
numRows++;
}
你应该得到正确的结果。 编辑:只是略微扩展它:你有正确的想法,你只是忘记了第1天的偏移是0而不是1的事实。