天數電腦——5行代碼得到日期,2行代碼得到天數
方法
利用26位數組
溢出位 | 天數 | 溢出位 | 天數 |
---|---|---|---|
閏年 | 平年 | ||
31,29,31,30,31,30,31,31,30,31,30 | 31,28,31,30,31,30,31,31,30,31,30,31 |
溢出位用來處理1月的特殊情況,減少判斷的代碼行數
代碼
主要部分
int []arr = new int[]{0,31,29,31,30,31,30,31,31,30,31,30,31,0,31,28,31,30,31,30,31,31,30,31,30,31};
//得到日期
for(int i = 0;i < 12; i++){
sum += arr[i + leap];
if(days - sum > 0 && days - sum <= arr[i + leap+1]){
System.out.println(years+"年的第 "+days+"天是 "+ (i+1) + "月 " + (days-sum) +"日");
break;
}
}
//得到天數
for(int i = 0; i < mon; i++){
sum += arr[i+leap];
}
完整代碼:
https://github.com/947104238/-DaysCalsulate/blob/master/DayCalculate.java
測試
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiETPwJWZ3ZCMwcTP39zZuBnLENTJENTJ3pVdC5GT0UFVPRTU65UerRUT5BzQPVTRU10dBpWT0UERNpXTE1ENFRUT5BzUPFTTU5EMNRVT21ERNRTRE1Ue4M1Tx0EVOBTTU1kdjJjYzpkMMRXOykVdNNjW2hXbZVnTtxENFRUT51EWa5mRXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)