본문 바로가기
혼자 공부하는 것들/JAVA

JAVA)DAY +1일하기 || +윤년추가

by applepick 2020. 7. 18.
반응형

날짜를 입력하면 +1DAY를 해주는 프로그램입니다. (+추가 윤년이 계산되지않아 윤년을 계산하여 적용시켰습니다.)

 

class Date
{
    private int month;
    private int day;
    private int year;
    int[] daysPerMonth = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    public Date( int month, int day, int year )
    {
        this.month = checkMonth( month);
        this.year = year;
        this.day = checkDay( day );
    }

    private int checkMonth( int testMonth )
    {
        if ( testMonth >= 1 && testMonth <= 12 )
            return testMonth;
        else
            return 1;  // for invalid  testMonth
    }


    private int checkDay( int testDay )
    {
        if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
            return testDay;
        if ( month==2 && testDay==29 &&(year%400 == 0 || (year%4 == 0 && year%100 != 0)) )
        	return testDay;
 
        return 1;  // for invalid testDay
    }


    public String toString()
    {
        return month + "/" + day + "/" + year;
    }

    public void increase() {
    	if(month == 12 && day == 31) {
        	month =1;
        	day =1;
    		year = year+1;
    	}

    	else if( month==2 && day==29 &&(year%400 == 0 || (year%4 == 0 && year%100 != 0))){
    		this.month = checkMonth( month+1);
	    	this.day = 1;
    		}

    	else if( month==2 && day==28 &&(year%400 == 0 || (year%4 == 0 && year%100 != 0))){
	    	this.day = day+1;
    		}

    	else if(daysPerMonth[month] == day){
    		this.month = checkMonth( month+1);
    		this.day=1;
    	}
    	else 
    	{
    		this.day=checkDay( day+1 );
    	}
    }
}



public class DateTest
{
    public static void main( String[] args )
    {
        Date date1 = new Date( 2,28, 2020 );
        System.out.println( "Entrace date:  " + date1 );
        date1.increase();
        System.out.println( "Graduation date: " + date1 );
    }
}

궁금한 부분있으시면 댓글을 달아서 물어봐주세요~

반응형

댓글