编写Java程序随机输入日期计算星期几,打印任意一年的日历

简介: 编写Java程序随机输入日期计算星期几,打印任意一年的日历

需求说明:


随机输入日期计算星期几,打印任意一年的日历

已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几


48.png


实现思路:


一、知道1900年1月1日为星期一,求输入的年份月份与1900年1月1日相隔的总天数。闰年366天,平年365天。

 

通过运算符实现闰年判断的条件:

(1)能被4整除且不能被100整除的年份

(2)能被400整除的年份

(3)两个条件只需要满足其中任意一个即可,故闰年判断的条件:


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


实现代码:


import java.util.Scanner;
public class Calendar {
  public static void main(String[] args){
    //第一步:接收用户输入的年份和月份
     Scanner input=new Scanner(System.in);
     System.out.println("请输入年份");
     int year=input.nextInt();
     System.out.println("请输入月份");
     int month=input.nextInt();
     int day=0;
     //第二步:求输入的年份月份与1900年1月1日相隔的总天数
     for (int i = 1900; i < year; i++) {
       if ((i % 4 == 0 && i % 100 != 0)||(i % 400 == 0)) {
        day+=366;
      }else {
        day+=365;
      }
     }
      //求相隔月份的天数
     for (int i = 1; i < month; i++) {
      if (i==2) {
        if ((year%4==0&&year%100!=0)||(year%400==0)) {
          day+=29;
        }else {
          day+=28;
        }
      }else if (i==4||i==6||i==9||i==11) {
        day+=30;
      }else {
        day+=31;
      }
     }
     //第三步:计算上个月最后一天是星期几
    int weeks=day%7;
    int day2=0;
    switch (month) {
      case 2:
        if (year%4==0&&year%100!=0||year%400==0) {
          day2+=29;
        }else {
          day2+=28;
        }
          break;
      case 4:
      case 6:
      case 9:
      case 11:
        day2=30;
                break;
      default:
        day2=31;
          break;
    }
    //第四部:打印日历
    System.out.println("一\t二\t三\t四\t五\t六\t日");
    for (int i = 1; i <= weeks; i++) {
      System.out.print(" \t");
    }
    for (int i = 1; i <= day2; i++) {
      System.out.print(i+"\t");
      if ((i+weeks)%7==0) {
        System.out.println();
      }
    }
  }
}
相关文章
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
131 0
|
1月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
298 98
|
2月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
3月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
120 2
|
3月前
|
安全 Java API
Java日期时间API:从Date到Java.time
本文深入解析了Java 8中引入的全新日期时间API,涵盖LocalDate、LocalTime、LocalDateTime、ZonedDateTime等核心类的使用,以及时间调整、格式化、时区处理和与旧API的互操作。通过实例对比,展示了新API在可变性、线程安全与易用性方面的显著优势,并提供迁移方案与实战技巧,助你掌握现代Java时间处理的最佳实践。
|
4月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
248 14
|
8月前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
Java
用JAVA打印菱形(利用for循环)详细注释
用JAVA打印菱形(利用for循环)详细注释
4431 9
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
121 1