用函数简化 if 语句
Simplify if statement with functions
我正在为一个学校研讨会做一个日历项目。它应该打印彼此相继的三个月。 (您指定要打印一月,它会打印上一年的十二月、一月和二月)。
我有这个 if 语句,但我想将它简化为三行代码。我该怎么做?可能吗?
if (month == 1) {
printMonth(12, year-1);
printMonth(month, year);
printMonth(month+1, year);
} else if (month == 12) {
printMonth(month-1, year);
printMonth(month, year);
printMonth(1, year+1);
} else {
printMonth(month-1, year);
printMonth(month, year);
printMonth(month+1, year);
}
尝试使用 ternary operator:
printMonth(month == 1 ? 12 : month - 1, month == 1 ? year - 1 : year);
printMonth(month, year);
printMonth(month == 12 ? 1 : month + 1, month == 12 ? year + 1 : year);
您可以使用 Joda 日期时间 class 来表示当前 year/month,这可能比将年和月作为独立整数携带更好。
那么你可以这样写:
printMonth(dt.minusMonths(1));
printMonth(dt);
printMonth(dt.plusMonths(1));
我自己遇到这样的问题时,倾向于采用年月结合的方式(也是为了节省一些代码行):
int monthAndYear = year * 12 + month;
printMonth(monthAndYear - 1);
printMonth(monthAndYear);
printMonth(monthAndYear + 1);
如您所见,这需要您调整 printMonth
方法,当然如果可能的话。
private void printMonth(int monthAndYear) {
int year = monthAndYear / 12;
int month = monthAndYear % 12;
// other code...
}
虽然这些仍然是四行...
我正在为一个学校研讨会做一个日历项目。它应该打印彼此相继的三个月。 (您指定要打印一月,它会打印上一年的十二月、一月和二月)。
我有这个 if 语句,但我想将它简化为三行代码。我该怎么做?可能吗?
if (month == 1) {
printMonth(12, year-1);
printMonth(month, year);
printMonth(month+1, year);
} else if (month == 12) {
printMonth(month-1, year);
printMonth(month, year);
printMonth(1, year+1);
} else {
printMonth(month-1, year);
printMonth(month, year);
printMonth(month+1, year);
}
尝试使用 ternary operator:
printMonth(month == 1 ? 12 : month - 1, month == 1 ? year - 1 : year);
printMonth(month, year);
printMonth(month == 12 ? 1 : month + 1, month == 12 ? year + 1 : year);
您可以使用 Joda 日期时间 class 来表示当前 year/month,这可能比将年和月作为独立整数携带更好。
那么你可以这样写:
printMonth(dt.minusMonths(1));
printMonth(dt);
printMonth(dt.plusMonths(1));
我自己遇到这样的问题时,倾向于采用年月结合的方式(也是为了节省一些代码行):
int monthAndYear = year * 12 + month;
printMonth(monthAndYear - 1);
printMonth(monthAndYear);
printMonth(monthAndYear + 1);
如您所见,这需要您调整 printMonth
方法,当然如果可能的话。
private void printMonth(int monthAndYear) {
int year = monthAndYear / 12;
int month = monthAndYear % 12;
// other code...
}
虽然这些仍然是四行...