• 编写定义日期类及使用日期类对象,要求:定义构造方法,实现初始化,定义显示日期的成员方法,定义计算两个日期之间的相距天数的成员方法


    代码:

    package naizi;
    
    import java.util.Scanner;
    
    public class Date {
    
    //定义私有成员变量
    private int yy,mm,dd;
    //定义构造方法
    public Date(int yy,int mm,int dd){
    	this.yy=yy;
    	this.mm=mm;
    	this.dd=dd;
    }
    //生成get和set方法
    public int getYy() {
    	return yy;
    }
    public void setYy(int yy) {
    	this.yy = yy;
    }
    public int getMm() {
    	return mm;
    }
    public void setMm(int mm) {
    	this.mm = mm;
    }
    public int getDd() {
    	return dd;
    }
    public void setDd(int dd) {
    	this.dd = dd;
    }
    
    //计算两个日期之间的相距天数的成员方法
    int DiffDays(Date d){
    	int [] DAY1={31,28,31,30,31,30,31,31,30,31,30,31};
    	int [] DAY2={31,29,31,30,31,30,31,31,30,31,30,31};
    	int day=0,day1=0,day2=0,i;
    	if(yy==d.getYy()&&mm==d.getMm()){                 //判断是否在同一年,同一月
    		return d.getDd()-dd;
    	}else if(yy==d.getYy()){                          //判断在同一年不同月份
    		if(yy%400==0||(yy%100!=0&&yy%4==0)){          //能被400整除或者不能被100整除但能被4整除为闰年
    			for(i=0;i<mm-1;i++){
    				day1+=DAY2[i];
    			}
    			day1+=dd;
    			for(i=0;i<d.getMm()-1;i++){
    				day2+=DAY2[i];
    			}
    			day2+=d.getDd();
    			return day2-day1;
    		}else{
    			for(i=0;i<mm-1;i++){
    				day1+=DAY1[i];
    			}
    			day1+=dd;
    			for(i=0;i<d.getMm()-1;i++){
    				day2+=DAY1[i];
    			}
    			day2+=d.getDd();
    			return day2-day1;
    		}
    	}else{                                             //否则不在同一年同一月
    		if(d.getYy()%400==0||(d.getYy()%100!=0&&d.getYy()%4==0)){
    			for(i=0;i<d.getMm()-1;i++){
    				day2+=DAY2[i];
    			}
    			day2+=d.getDd();
    		}else{
    			for(i=0;i<d.getMm()-1;i++){
    				day2+=DAY1[i];
    			}
    			day2+=d.getDd();
    		}
    		if(yy%400==0||(yy%100!=0&&yy%4==0)){
    			for(i=0;i<mm-1;i++){
    				day1+=DAY2[i];
    			}
    			day1+=dd;
    		}else{
    			for(i=0;i<mm-1;i++){
    				day1+=DAY1[i];
    			}
    			day1+=dd;
    		}
    		for(i=yy;i<d.getYy();i++){
    			if(i%400==0||(i%100!=0&&i%4==0)){
    				day+=366;
    			}else{
    				day+=365;
    			}
    		}
    		return day2+day-day1;
    	}
    }
    
    	
    public static void main(String[] args) {
    	int a,b,c;
    	Date d1,d2;
    	try{
    	Scanner sc = new Scanner(System.in);
    	String str1 = sc.next();
    	a=Integer.parseInt(str1);
    	str1 = sc.next();
    	b=Integer.parseInt(str1);
    	str1 = sc.next();
    	c=Integer.parseInt(str1);
    	d1=new Date(a,b,c);
    	String str2 = sc.next();
    	a=Integer.parseInt(str2);
    	str2 = sc.next();
    	b=Integer.parseInt(str2);
    	str2 = sc.next();
    	c=Integer.parseInt(str2);
    	d2=new Date(a,b,c);
    	System.out.println("Daynum:"+d1.DiffDays(d2));
    	}catch(Exception e){
    	System.out.println("error");
    	}
    	}
    }
    

    测试如图:

  • 相关阅读:
    git rebase学习
    git rebase 通俗易懂!
    fatal: Refusing to fetch into current branch refs/heads/ReqMerge_26 of non-bare repository
    跨越千年的RSA算法
    CodeForces 734E-Anton and Tree(并查集缩点+树的直径)
    程序员的笑话
    智慧煤矿:新基建加速智能化布局,AI助力煤炭产业转型升级
    EasyScreenLive推流组件推RTSP流到EasyDarwin操作过程分享
    EasyCVRpython调接口报错cannot unmarshal array into Go value of type main
    使用ninja -C out/Release指令编译安卓Webrtc的SDK报错找不到android ndk处理方式
  • 原文地址:https://www.cnblogs.com/zqm-sau/p/9762833.html
Copyright © 2020-2023  润新知