java实验2(计算日期源代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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+"号");