#显示每月第一天是星期几 #显示日历

显示每月第一天是星期几

输入年份

import java.util.*;
import javax.swing.*;  
  class Main {
    public static void main (String[] args){
      Scanner input = new Scanner(System.in);
      
      System.out.print("Enter year: (e.g., 2008): ");
      int yearNotChange = input.nextInt();
      
      String yearString = yearNotChange + "";
      int month = 0;
      int oneDayOfMonth = 1;
      
      for(int i = 1; i <= 12; i++){
        int year = yearNotChange;
        month = i;
        if(month == 1 || month == 2){
          month += 12;
          year -= 1;
        }
        
        int dayOfWeek = (oneDayOfMonth + (int)((26 * (month + 1)) / 10) 
                       + (year % 100) + (int)((year % 100) / 4) 
                       + (int)((int)(year / 100) / 4) 
                       + 5 * (int)(year / 100)) % 7;

        String dayOfWeekString = "";
        switch(dayOfWeek){
          case 0:
            dayOfWeekString = "Saturday";
            break;
          case 1:
            dayOfWeekString = "Sunday";
            break;
          case 2:
            dayOfWeekString = "Monday";
            break;
          case 3:
            dayOfWeekString = "Tuesday";
            break;        
          case 4:
            dayOfWeekString = "Wednesday";
            break;
          case 5:
            dayOfWeekString = "Thursday";
            break;
          case 6:
            dayOfWeekString = "Friday";
            break; 
        }
        
        String monthString = "";
        switch(i){
          case 1:
            monthString = "January";
            break;
          case 2:
            monthString = "February";
            break;
          case 3:
            monthString = "March";
            break;        
          case 4:
            monthString = "April";
            break;
          case 5:
            monthString = "May";
            break;
          case 6:
            monthString = "June";
            break; 
          case 7:
            monthString = "July";
            break;
          case 8:
            monthString = "Augest";
            break;
          case 9:
            monthString = "September";
            break;
          case 10:
            monthString = "October";
            break; 
          case 11:
            monthString = "November";
            break;
          case 12:
            monthString = "December";
            break;
        }
        System.out.println(monthString + " 1, " + yearString +" is " + dayOfWeekString);     
      } 
    }
  }

显示日历

制表格\t真是个神奇的东西,觉得自己做不出来,结果竟然做出来了,但是感觉程序还是乱七八糟的。希望下次看程序的时候不要一头雾水。

import java.util.*;
import javax.swing.*;  
  class Main {
    public static void main(String[] args){
      //获得年份
      Scanner input = new Scanner(System.in);
      System.out.print("Enter year: (e.g., 2008): ");
      int yearNotChange = input.nextInt();
      //打印12个月的日历
      for(int i = 1; i <= 12;i++){
        //计算每月1号星期几
        int year = yearNotChange;
        int month = i;
        int oneDayOfMonth = 1;
        if(month == 1 || month == 2){
          month += 12;
          year -= 1;
        }
        //0-星期六 1-星期天 2-星期一... 6-星期五
        int dayOfWeek = (oneDayOfMonth + (int)((26 * (month + 1)) / 10) 
                       + (year % 100) + (int)((year % 100) / 4) 
                       + (int)((int)(year / 100) / 4) 
                       + 5 * (int)(year / 100)) % 7;
        
        //输出每月台头
        String title = "";
        switch(i){
          case 1:
            title = "\t\tJanuary " + yearNotChange;
            break;
          case 2:
            title = "\t\tFebruary " + yearNotChange;
            break;
          case 3:
            title = "\t\tMarch " + yearNotChange;
            break;
          case 4:
            title = "\t\tApril " + yearNotChange;
            break;
          case 5:
            title = "\t\tMay " + yearNotChange;
            break;
          case 6:
            title = "\t\tJune " + yearNotChange;
            break;
          case 7:
            title = "\t\tJuly " + yearNotChange;
            break;
          case 8:
            title = "\t\tAugest " + yearNotChange;
            break;
          case 9:
            title = "\t\tSeptember " + yearNotChange;
            break;
          case 10:
            title = "\t\tOctober " + yearNotChange;
            break;
          case 11:
            title = "\t\tNovember " + yearNotChange;
            break;
          case 12:
            title = "\t\tDecember " + yearNotChange;
            break;
          
        }
        System.out.print("\n" + title);
        System.out.print("\n----------------------------");
        System.out.print("\nSun\tMon\tTue\tWed\tThu\tFri\tSat\n");
        //计算每月多少天
        int daysOfMonth = 0;
        switch(i){
          case 1:
            daysOfMonth = 31;
            break;
          case 2:
            boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
            daysOfMonth = isLeapYear ? 29 : 28;
            break;
          case 3:
            daysOfMonth = 31;
            break;
          case 4:
            daysOfMonth = 30;
            break;
          case 5:
            daysOfMonth = 31;
            break;
          case 6:
            daysOfMonth = 30;
            break;
          case 7:
            daysOfMonth = 31;
            break;
          case 8:
            daysOfMonth = 31;
            break;
          case 9:
            daysOfMonth = 30;
            break;
          case 10:
            daysOfMonth = 31;
            break;
          case 11:
            daysOfMonth = 30;
            break;
          case 12:
            daysOfMonth = 31;
            break;
        }
        
      /*计算第一行空几天 dayOfWeek
        0-星期六-6 (0/1/2/3/4/5/6 + 6)% 7
      */ 
        int count = (dayOfWeek + 6) % 7;
        //输出第一行空的列数
        for(int j = 1; j <= count; j++)
            System.out.print("\t");
        //每7天换行(加上空格)
        for(int k = 1; k <= daysOfMonth; k++){
          count++;
          System.out.print((count % 7 == 0) ? k + "\n" : k + "\t");
        } 
      }
    }
  }
posted @   Scenery_Shelley  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示