这里只是为了满足用java语言来完成这个程序,并不能体现java的优势所在,希望能给你们提供一点点的帮助,其实思路还是不错的。
毕竟太渣,不过是换个语言的形式罢了.....
package nicai;
import java.util.Scanner;
public class Main {
static int[] MonthDay={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; ///定义一个常规每月天数的数组;
public static boolean RUN(int year){ ///定义一个判断闰年的方法
if(year%400==0 || (year%4==0 && year%100!=0))
return true;
return false;
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int year, month, day, n, y1, m1, d1;
///判断输入的日期是否合法;
System.out.println("亲输入三个整数,分别代表年,月,日:");
year = cin.nextInt();
month = cin.nextInt();
day = cin.nextInt();
boolean flag = true;
if(month<=0 || month>=13)
{
flag=false;
}
if(month==1 || month==3 || month ==5 || month==7 || month==8 || month==10 || month ==12)
{
if(day<=0 || day>=32)
{
flag=false;
}
}
else if(month==2)
{
if(RUN(year))
{
if(day<=0 || day>=30)
flag=false;
}
else
{
if(day<=0 || day>=29)
flag=false;
}
}
else
{
if(day<=0 || day>=31)
{
flag=false;
}
}
if(flag==false)
{
System.out.println("输入日期值不合法!");
}
else
{
System.out.println("输入日期值合法!");
}
System.out.println("亲输入三个整数,分别代表起始日期的年,月,日:");
y1 = cin.nextInt();
m1 = cin.nextInt();
d1 = cin.nextInt();
System.out.println("亲输入相隔的天数n:");
n =cin.nextInt();
System.out.println("n天后的日期是:");
GETday(y1,m1,d1,n);
///两日期之间相距的天数
System.out.println("请输入 起始日期y1,m1,d1:");
y1 = cin.nextInt();
m1 = cin.nextInt();
d1 = cin.nextInt();
int y2, m2, d2;
System.out.println("请输入 结束日期y2,m2,d2:");
y2 = cin.nextInt();
m2 = cin.nextInt();
d2 = cin.nextInt();
System.out.println("两日期相差天数为:");
int[] yearday = new int[110000];
yearday[0]=0;
for(int i=1; i<=100000; i++)
yearday[i]=yearday[i-1]+(RUN(i)==true ? 366 : 365);
int tab[][] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
int leap;
int sum=0;
if(y1==y2)
{
if(RUN(y1))
leap=1;
else
leap=0;
for(int i=m1+1; i<m2; i++)
sum+=tab[leap][i];
if(m1<m2)
{
sum+=tab[leap][m1]-d1;
sum+=d2;
}
else
sum+=d2-d1;
System.out.println(sum);
}
else
{
if(RUN(y1))
leap=1;
else
leap=0;
for(int i=m1+1; i<=12; i++)
sum+=tab[leap][i];
sum+=tab[leap][m1]-d1;
if(RUN(y2))
leap=1;
else
leap=0;
for(int i=1; i<m2; i++)
sum+=tab[leap][i];
sum+=d2;
sum+=yearday[y2-1]-yearday[y1];
System.out.println(sum);
}
}
///求某日期n天后的日期
private static void GETday(int y1, int m1, int d1, int n) {
int y2, m2, d2;
y2=y1;
m2=m1;
d2=d1;
int D=365;
if(RUN(y2))
{
D=366;
}
while(true)
{
if(n/D<=0)
break;
n=n-D;
y2++;
if(RUN(y2))
D=366;
}
if(RUN(y2))
{
MonthDay[2]=29;
}
if((n+d2) <= MonthDay[m2])
{
d2 = n+d2;
}
else
{
d2 = n + d2 - MonthDay[m2];
m2++;
if(m2>=12)
{
y2++;
m2 = m2%12;
}
}
System.out.println("相隔n天后的日期是:");
System.out.println(y2+"-"+m2+"-"+d2);
}
}