techJava.simple Calendar

Java Simple Calendar

public class SimpleCalendar {
  // Main method, will be executed when the program is run
  public static void main(String[] args) {
    // Calls the createCalendar method
    // with 31 days(one month) and the first day being Wednesday (3)
    // 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
    SimpleCalendar.createCalendar(31, 3);
  }
 
  public static void createCalendar(int days, int firstDay) {
    // Array of String
    // representing days of the week in Japanese ("Sun", "Mon", "Tue", etc.)
    String[] daysOfWeek = {"日", "月", "火", "水", "木", "金", "土"};
    // String representing the space symbol
    // make it easier to notice
    String spaceSymbol = "|";
 
    // Enhanced for loop
    // Iterates through the daysOfWeek array
    // make up the first row of the calendar
    for (String day : daysOfWeek) {
      System.out.print(day + spaceSymbol);
    }
 
    // Create a new line after the days of week header
    System.out.println();
 
    // Print leading spaces (underscores)
    // for the days before the first day of the month
    // This loop runs 'firstDay' times
    // to align the start of the month correctly
    for (int i = 0; i < firstDay; i++) {
      System.out.print("_" + "_" + spaceSymbol);
    }
 
    // Loop to print the days of the month
    // starting from 1 until the specified number of days (31 here)
    for(int i = 1; i <= days; i++) {
      // If the day is a single digit
      // prepend a '0' for better alignment
      // (e.g., 01, 02, etc.)
      if(i < 10) {
        System.out.print("0");
      }
 
      // Print the current day followed by the space symbol
      System.out.print(i + spaceSymbol);
 
      // After printing 7 days (a full week), move to the next line
      // The condition checks if (current day number + first day offset) is divisible by 7
      // For example, if the first day is Wednesday (3), the first week will have 3 padding empty slots
// padding slot, padding slot, padding slot, (1 + 3) % 7 = 4, (2 + 3) % 7 = 5, (3 + 3) % 7 = 6, (4 + 3) % 7 = 0 (next line)
// (5 + 3) % 7 = 1, (6 + 3) % 7 = 2, (7 + 3) % 7 = 3, (8 + 3) % 7 = 4, (9 + 3) % 7 = 5, (10 + 3) % 7 = 6, (11 + 3) % 7 = 0 (next line)
// (12 + 3) % 7 = 1, (13 + 3) % 7 = 2, (14 + 3) % 7 = 3, (15 + 3) % 7 = 4, (16 + 3) % 7 = 5, (17 + 3) % 7 = 6, (18 + 3) % 7 = 0 (next line)
// (19 + 3) % 7 = 1, (20 + 3) % 7 = 2, (21 + 3) % 7 = 3, (22 + 3) % 7 = 4, (23 + 3) % 7 = 5, (24 + 3) % 7 = 6, (25 + 3) % 7 = 0 (next line)
// (26 + 3) % 7 = 1, (27 + 3) % 7 = 2, (28 + 3) % 7 = 3, (29 + 3) % 7 = 4, (30 + 3) % 7 = 5, (31 + 3) % 7 = 6
      if ((i + firstDay) % 7 == 0) {
        System.out.println();
      }
 
// Output:
//
// 日|月|火|水|木|金|土|
// __|__|__|01|02|03|04|
// 05|06|07|08|09|10|11|
// 12|13|14|15|16|17|18|
// 19|20|21|22|23|24|25|
// 26|27|28|29|30|31|
 
    }
  }
}
Do not shoot this.