Guide For School logo Guide For SchoolICSE and ISC Resources

Java program to print the Calendar of any given month

16 February 2016

Java program to accept the year, month and the weekday name of the 1st day of that month and generate its calendar.


Question:

Write a program to accept the year, month and the weekday name of the 1st day of that month and generate its calendar.

Example :

INPUT : Year : 2016 Month : February 1st day of February : Monday

OUTPUT :

Plain
---------------------------------
			   February 2016
	---------------------------------
	SUN	MON	TUE	WED	THU	FRI	SAT
	---------------------------------
	 	 1	 2	 3	 4	 5	 6
	---------------------------------
	 7	 8	 9	 10	 11	 12	 13
	---------------------------------
	 14	 15	 16	 17	 18	 19	 20
	---------------------------------
	 21	 22	 23	 24	 25	 26	 27
	---------------------------------
	 28	 29	 	 	 	 	 
	---------------------------------

Programming Code:

Java
/**
* The class CalendarProgram inputs a year, month and the weekday name
* of the 1st day of that month and generates its calendar
* @author : www.guideforschool.com
* @Program Type : BlueJ Program - Java
*/

import java.util.*;
class CalendarProgram
{
    //Function to match the given month and return its maximum days
    int findMaxDay(String mname, int y)
    {
        String months[] = {"","January", "February", "March", "April", "May", "June", 
                            "July", "August", "September", "October", "November", "December"};
        int D[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        
        if((y%400==0) || ((y%100!=0)&&(y%4==0)))
        {
            D[2]=29;
        }
        int max = 0;
        for(int i=1; i<=12; i++)
        {
            if(mname.equalsIgnoreCase(months[i]))
            {
                max = D[i];  //Saving maximum day of given month
            }
        }
        return max;
    }
    
    //Function to match the given weekday name and return its weekday no.
    int findDayNo(String wname)
    {
        String days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", 
                            "Saturday"};
        int f = 0;
        for(int i=0; i<7; i++)
        {
            if(wname.equalsIgnoreCase(days[i]))
            {
                f = i;  //Saving week day no. given day (e.g. '0' for Sunday)
            }
        }
        return f;
    }
    
    //Function for creating the calendar
    void fillCalendar(int max, int f, String mname, int y)
    {
        int A[][] = new int[6][7];
        int x = 1, z = f;
    
        for(int i=0;i<6;i++)
        {
            for(int j=f; j<7; j++)
            {
                if(x<=max)
                {
                    A[i][j] = x;
                    x++;
                }
            }
            f = 0;
        }
        
        for(int j=0; j<z; j++) //Adjustment to bring last (6th) row elements to first row
        {
            A[0][j]=A[5][j];
        }    
        
        printCalendar(A, mname, y); //Calling function to print the calendar
    }
    
    //Function for printing the calendar
    void printCalendar(int A[][], String mname, int y)
    {  
        System.out.println("\n\t----------------------------------------------------");
        System.out.println("\t\t\t   "+mname+" "+y); 
        System.out.println("\t----------------------------------------------------"); 
        System.out.println("\tSUN\tMON\tTUE\tWED\tTHU\tFRI\tSAT");
        System.out.println("\t----------------------------------------------------"); 
        
        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 7; j++)
            {
                if(A[i][j]!=0)
                    System.out.print("\t "+A[i][j]);
                else
                    System.out.print("\t ");
            }
            System.out.println("\n\t----------------------------------------------------"); 
        }
    }
    
    public static void main(String args[])
    {
        CalendarProgram ob = new CalendarProgram();
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the year : ");
        int y = sc.nextInt();
        System.out.print("Enter the month name (e.g. January) : ");
        String mname = sc.next();
        System.out.print("Enter the week day name (e.g. Sunday) of 1st day of "+mname+" : ");
        String wname = sc.next();
        
        int max = ob.findMaxDay(mname,y);
        int f = ob.findDayNo(wname);        
        ob.fillCalendar(max,f,mname,y);
    }
}

Output:

Plain
Enter the year : 2016
Enter the month name (e.g. January) : October
Enter the week day name (e.g. Sunday) of 1st day of October : Saturday

	---------------------------------
			   October 2016
	---------------------------------
	SUN	MON	TUE	WED	THU	FRI	SAT
	---------------------------------
	 30	 31	 	 	 	 	 1
	---------------------------------
	 2	 3	 4	 5	 6	 7	 8
	---------------------------------
	 9	 10	 11	 12	 13	 14	 15
	---------------------------------
	 16	 17	 18	 19	 20	 21	 22
	---------------------------------
	 23	 24	 25	 26	 27	 28	 29
	---------------------------------

Tags and Categories

Class 12Date Related ProgramsISC Important ProgramsISCComputer Applications