Skip to main content

Use Java to write a simple solar calendar


Photo by Ketut Subiyanto from Pexels 

The difficulty of printing a month’s calendar is to find out the number of weeks corresponding to the first day of the month. A good way to solve this problem is to find out that the first day of January of the year corresponds to Monday, so that the number of weeks on the first day of the month required = (the total number of days between the year and the year entered + the number of days lost The total number of days between January of the year and the month entered + 1)%7. Then the year I was looking for was 1900. 



import java.util.Scanner;



public class Calendar {

    public static void main(String[] args) {

        //Enter the year and month

        //Calculate the total number of days between 1900 and the year entered

        //Judging the average leap year

        Scanner scanner=new Scanner(System.in);

        System.out.println("Enter a year:");

        int year=scanner.nextInt();

        int yearTotalDays = 0;

        for(int i=1900;i<year;i++) {

            if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {

                yearTotalDays += 366;

            } else {

                yearTotalDays += 365;

            }

        }

       //Calculate the total number of days from January of the year entered to the month entered

        System.out.println("Enter a month:");

        int month=scanner.nextInt();

        int monthTotalDays=0;

        int days=0;

        for(int m=1;m<=month;m++){      //The equal sign of m here is not used when calculating, but to avoid reconsidering how many days there are in the month when printing the input month below

            //Determine the number of days in each month (big month, small month, February (also judge whether it is a normal year or a leap year)))

            switch(m){

                case 2:

                    //Determine whether the lost year is a leap year

                    if(year%4 == 0 && year%100 != 0 || year%400 == 0){

                        days = 29;

                    }else{

                        days = 28;

                    }

                    break;

                //Small Moon

                case 4:

                case 6:

                case 9:

                case 11:

                    days=30;

                    break;

                //Big moon

                default:

                  days=31;

            }

            //Accumulate the total number of days in each month

            if(m<month){

                monthTotalDays+=days;

            }

        }

        //Calculate the week number of the first day of the entered month

            int week=(yearTotalDays+monthTotalDays+1)%7;

        //Because the value of Sunday is 0, in order to control the position of the first print, it is necessary to set Sunday to 7

        if(week==0){

           week=7;

        }

        System.out.println("一\t二\t三\t四\t五\t六\t七");

        //Control the spacing of printing

        for(int b=1;b<week;b++){

            System.out.print("\t");

        }

        //Print every day of the month

        for(int d=1;d<=days;d++) {

            System.out.print(d+"\t");

            //Judge whether every day is Sunday

            if ((yearTotalDays + monthTotalDays + d) % 7 == 0) {

                //Wrap

                System.out.println();

            }

        }

    }


}



Comments

Popular posts from this blog

8 common methods for server performance optimization

  1. Use an in-memory database In-memory database is actually a database that puts data in memory and operates directly. Compared with the disk, the data read and write speed of the memory is several orders of magnitude higher. Saving the data in the memory can greatly improve the performance of the application compared to accessing it from the disk. The memory database abandoned the traditional way of disk data management, redesigned the architecture based on all data in memory, and made corresponding improvements in data caching, fast algorithms, and parallel operations, so the data processing speed is faster than that of traditional databases. Data processing speed is much faster.       But the problem of security can be said to be the biggest flaw in the memory database. Because the memory itself has the natural defect of power loss, when we use the memory database, we usually need to take some protection mechanisms for the data on the memory in advance, such...

Recursion-maze problem - Rat in the Maze - Game

  package com.bei.Demo01_recursion; public class MiGong {     public static void main(String[] args)  {         //First create a two-dimensional array to simulate the maze         int [][]map=new int[8][7];         //Use 1 for wall         for (int i = 0; i <7 ; i++) {             map[0][i]=1;             map[7][i]=1;         }         for (int i = 0; i <8 ; i++) {             map[i][0]=1;             map[i][6]=1;         }         //Set the bezel         map[3][1]=1;         map[3][2]=1;         //Output         for (int i = 0; i <8 ; i++) {             for (int j = 0; j ...

AirBnB Infographic Journey to IPO

  Full Post at  https://techpomelo.com/2020/10/infographics-airbnb-milestone-journey-to-ipo/