Advertisement
Guest User

DisplayCalendar

a guest
Mar 24th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.12 KB | None | 0 0
  1. package displaycalendar;
  2.  
  3. /**
  4.  *
  5.  * @author Patrick
  6.  */
  7. import java.util.Calendar;
  8. import java.util.Scanner;
  9. import java.util.GregorianCalendar;
  10.  
  11. public class DisplayCalendar {
  12.  
  13.     /**
  14.      * @param args the command line arguments
  15.      */
  16.     public static void main(String[] args) {
  17.        
  18.         Scanner input = new Scanner(System.in);
  19.         Calendar calendar = new GregorianCalendar();
  20.        
  21.        
  22.         input.nextLine(); //make sure previous line is clear
  23.         System.out.println("Please enter the date as numbers with spaces in between"
  24.                 + "(example: day month year), "
  25.                 + "\nthe current date will be displayed if insufficient data is given: ");
  26.        
  27.         //read the line and scan for each integer in it
  28.         String lineBuffer = input.nextLine();
  29.         Scanner dateScanner = new Scanner(lineBuffer);
  30.        
  31.         int day = dateScanner.nextInt();
  32.         int month = dateScanner.nextInt();
  33.         int year = dateScanner.nextInt();
  34.        
  35.         if (month == 0){
  36.             month = (calendar.get(Calendar.MONTH) + 1);
  37.         }
  38.         if (year == 0){
  39.             year = calendar.get(Calendar.YEAR);
  40.         }
  41.        
  42.         //print statement here
  43.         printMonthTitle(year, month);
  44.         printMonthBody(year, month);
  45.        
  46.     }
  47.    
  48.     //print month title
  49.     public static void printMonthTitle(int year, int month){
  50.         System.out.println("       " + getMonthName(month) +
  51.                 " " + year);
  52.         System.out.println("------------------------------");
  53.         System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
  54.     }
  55.    
  56.     //getMonthName
  57.     public static String getMonthName(int month){
  58.         String monthName = "";
  59.        
  60.         switch(month){
  61.             case 1: monthName = "January";
  62.             case 2: monthName = "February";
  63.             case 3: monthName = "March";
  64.             case 4: monthName = "May";
  65.             case 5: monthName = "April";
  66.             case 6: monthName = "May";
  67.             case 7: monthName = "June";
  68.             case 8: monthName = "July";
  69.             case 9: monthName = "August";
  70.             case 10: monthName = "Septemner";
  71.             case 11: monthName = "November";
  72.             case 12: monthName = "December";
  73.         }
  74.         return monthName;
  75.     }
  76.    
  77.     //printMonthBody
  78.     public static void printMonthBody(int year, int month){
  79.        
  80.         int startDay = getStartDay(year, month);
  81.        
  82.         int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);
  83.        
  84.         int i = 0;
  85.         for(i = 0; i <startDay; i++){
  86.             System.out.println("    ");
  87.            
  88.             if((i + startDay) % 7 == 0)
  89.                 System.out.println();
  90.         }
  91.        
  92.         System.out.println();
  93.     }
  94.    
  95.     //get start day of month/1/year
  96.     public static int getStartDay(int year, int month){
  97.         final int START_DAY_FOR_JAN_1_1800 = 3;
  98.        
  99.         int totalNumberOfDays = getTotalNumberOfDays(year, month);
  100.        
  101.         return totalNumberOfDays;
  102.     }
  103.    
  104.     //get the total number of days
  105.     public static int getTotalNumberOfDays(int year, int month){
  106.         int total = 0;
  107.        
  108.         for(int i = 1800; i < year; i++){
  109.             if(isLeapYear(i))
  110.                 total = total + 366;
  111.             else
  112.                 total = total + 365;
  113.         }
  114.        
  115.         for(int i = 1; i < month; i++)
  116.             total = total + getNumberOfDaysInMonth(year, i);
  117.        
  118.         return total;
  119.     }
  120.    
  121.     //get # days in month
  122.     public static int getNumberOfDaysInMonth(int year, int month){
  123.         if(month == 1 || month == 3 || month == 5 || month == 7 ||
  124.                 month == 8 || month == 10 || month == 12)
  125.             return 31;
  126.        
  127.         if(month == 4 || month == 6 || month == 9 || month == 11)
  128.             return 30;
  129.        
  130.         if(month == 2) return isLeapYear(year) ? 29 : 28;
  131.         return 0;
  132.     }
  133.    
  134.     public static boolean isLeapYear(int year){
  135.         return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
  136.     }
  137.    
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement