import java.util.Scanner;
import org.junit.Test;
public class tt {
/**
* 用以計算y年m1月d1日與同年的m2月d2之間的天數(m2>=m1),並打印計算結果.
* 若m1=m2且d1=d2則算1天.在閏年時,2月有29天.閏年的年號由以下方式確定:
* 該年號能被4整除但不能被100整除,或者該年號能被400整除則是閏年.
* 例:輸入1997,2,27,3,10時,輸出爲從1997年2月27日到3月10日共有12天.
*/
boolean isleapyear;
@Test
public void test() {
// TODO Auto-generated method stub
@SuppressWarnings("resource")
Scanner ss = new Scanner(System.in);
System.out.println("請輸入年份");
int y = ss.nextInt();
System.out.println("請輸入月");
int m1 = ss.nextInt();
System.out.println("請輸入日");
int d1 = ss.nextInt();
System.out.println("請輸入另一個月");
int m2 = ss.nextInt();
System.out.println("請輸入另一個日");
int d2 = ss.nextInt();
if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0) {
isleapyear = true;
} else {
isleapyear = false;
}
int day = 0;// 定義一個變量來計算天數
if (m1 > m2) {
// 打印不符合要求
System.out.println("不符合要求");
} else if (m1 == m2) {
// 特殊化處理相同月份
if (d1 > d2) {
// 打印不符合要求
System.out.println("不符合要求");
} else {
day = d2 - d1 + 1;
System.out.println("相隔天數爲:" + day);
}
} else {
// m1<m2
// 根據具體月份累加天數
int mmm = getDay(m1);
day = mmm - d1;
System.out.println(mmm);
for (int i = m1 + 1; i < m2; i++) {
day +=getDay(i);
}
day = day + d2 + 1;
System.out.println("相隔天數爲:" + day);
}
}
// 通過月份獲取天數;
public int getDay(int mounth) {
int day = 0;
switch (mounth) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
// 這些月份是31天
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
// 這些月份是30天
day = 30;
break;
case 2:
// 特殊化處理是否閏年
// TODO: 自己寫閏年判斷方法
if (isleapyear) {
day = 29;
} else {
day = 28;
}
break;
default:
// 一般不會進到這裏
break;
}
return day;
}
}