如何递归干燥这段代码以避免月份重复。递归DRY代码,计算几个月的天数,Java
我有一个想法,把1月的基本情况,并处理其他月份递归计算dayOfYear从上个月,然后将当前月添加到它。 类似if (month == 1) { ... } else { ... dayOfYear(month-1, dayOfMonth, year) ... } correct
但我不太确定实施情况,也不知道这是否是一种准确的方法。
假设我有一个这样的阵列,其中,我可以存储所有的我的日子 INT [] monthLengths =新INT [] {31,28,31,30,...,31}
public static int dayOfYear(int month, int dayOfMonth, int year) {
if (month == 2) {
dayOfMonth += 31;
} else if (month == 3) {
dayOfMonth += 59;
} else if (month == 4) {
dayOfMonth += 90;
} else if (month == 5) {
dayOfMonth += 31 + 28 + 31 + 30;
} else if (month == 6) {
dayOfMonth += 31 + 28 + 31 + 30 + 31;
} else if (month == 7) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30;
} else if (month == 8) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31;
} else if (month == 9) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
} else if (month == 10) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
} else if (month == 11) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
} else if (month == 12) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 31;
}
return dayOfMonth;
}
你为什么不只是使用API? –
“...通过递归计算...”您的代码不是递归的。 – Turing85
为什么你不想仅仅创建静态数组'int [12]'并且把所有天数放在这里? –