java实验2(计算日期源代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二简单数据类型和流程控制

4:设int year,month,day分别表示一个日期中的年月日,试编程求

a)对于任意三个整数,判断其是否为一个合法的日期值。

b)给定一个日期值,计算若干天后的日期值

c)如果有两个日期值,计算他们相距的天数。

实验原理:

先了解日期,年份分为平年闰年,其中平年365天,这年的二月份为28天,闰年有366天,这年二月份有29天,月份除了二月之外,30天和31天之分,这主要用到数组来进行定义月份的天数,利用Scanner类从键盘中输入日期和相隔天数。输入日期不能超出那个日历相应的规定值

实验过程:

需引用的:Scanner 包名:date

类:Datetext属性:year,month,day;

方法:int Datetrue(int year,int month,int day)(这个方法功能是验证输入的日期是否正确,其中包括月份,每月的天数的验证,具体详细,看函数标注)

int CountDate(int year1,int month1,int day1,int count1)(给定一个日期,计算count天后的日期是什么时候,在这个函数里,还有调用Datetrue(int year,int month,int day)认证输入的日期是否正确)

int timeGap(int year_2,int month_2,int day_2,int year3,int month3,int day3)(输入两个日期,计算它们相隔时间多少天,先验证输入的日期是否正确,调用input()函数,具体详细过程看源代码)

void input(int y,int m,int d)(这个函数通过递归调用,因输入的日期不正确要求用户重新输入,调用了Dateture(int year,int month,int day))

package date;

import ng.String;

import java.util.Scanner;

public class Datetext {

public int year,month,day;

public int Datetrue(int year,int month,int day){ //验证输入的日期是否符合正常输入int y=year;

int d=day;

int mon=month;

int g=0;

//mon是月份

//int num=0;

/* num=year.length();

if(num!=4){

System.out.println( year+"年份输入不合法");

}*/

if(mon>12||mon<1){

System.out.println( month+"月份输入不合法");

g=-1;

}

else System.out.println("输入月份合法");

if(d>31||d<1)

System.out.println( "日期输入不合法");

if(mon!=2){

if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12){ if((d>31||d<1)){

System.out.println( "日期输入不合法");

g=-1;

}

else System.out.println("输入日份合法");

}

else{

if((d>30||d<1)){

System.out.println("日期输入不合法");

g=-1;

}

else System.out.println("输入日份合法");

}

}

else {

if(y%4==0)

{

if((d>29||d<1)){

System.out.println( "日期输入不合法");

g=-1;

}

else System.out.println("输入日份合法");

}

if(y%4!=0)

{

if((d>28||d<1)){

System.out.println( "日期输入不合法");

g=-1;

}

else System.out.println("输入日份合法");

}

}

return g;

}

public int CountDate(int year1,int month1,int day1,int count1){ //给点一个日期值,计算若干天后的日期

int year10=year1,month10=month1,day10=day1,count=count1;

System.out.println("输出"+year10+"年"+month10+"月"+day10+"号"+"到"+count+"天后的日期是多少?");//

System.out.println("下面来计算相隔"+count+"后的日期");

int ynumber,mnumber,month2;//month2是二月份的日数

if(year10%4==0){ //判断年份

ynumber=count/366;

mnumber=count%366+day10;

month2=29;

}

else {

ynumber=count/365;

mnumber=count%365+day10;

month2=28;

}

if(ynumber>=1){

year10=year10+ynumber;

}

/*if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12){

day_count=31;

}else{if(month!=2)

day_count=30;

}*/

int month_day[]={0,31,month2,31,30,31,30,31,31,30,31,30,31};

for(;mnumber>month_day[month10];){

mnumber=mnumber-month_day[month10];

if(month10==12){

month10=0;

year10=year10+1;

}

month10++;

}

day10=mnumber;

System.out.println("加上"+count+"天是"+year10+"年"+month10+"月"+day10+"号");

相关文档
最新文档