[英]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);
}
嘗試使用三元運算符:
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 DateTime 類來表示當前的年/月,這可能比將年和月作為獨立整數攜帶更好。
然后你可以寫:
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...
}
雖然這些仍然是四行...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.