java实现日历(某年的日历,某月的日历)用户完全自定义

实现Java日历需要用到以下几个方面的知识:

  1. 日期和时间类:Java中有java.util.Date和java.util.Calendar类,但这些类已经被Java 8中的全新日期和时间API(Java.time)所取代,建议使用新API。
  2. 控制台输出:Java中有System.out.println()方法可以将内容输出到控制台。
  3. 用户输入:Java中有Scanner类可以读取用户输入。

下面是实现自定义日历的步骤:

  1. 导入必要的类:
import java.util.Scanner;
import java.time.LocalDate;
  1. 提供用户输入方法:
public static int getUserInput(String message) {
    System.out.print(message);
    Scanner scanner = new Scanner(System.in);
    return scanner.nextInt();
}

该方法接受一个字符串参数作为提示信息,然后使用Scanner类读取用户的输入并返回一个整数。

  1. 获取某年的日历:
public static void printYearCalendar(int year) {
    for (int month = 1; month <= 12; month++) {
        System.out.println(getMonthName(month) + " " + year);
        System.out.println("Su Mo Tu We Th Fr Sa");
        LocalDate date = LocalDate.of(year, month, 1);
        int dayOfWeek = date.getDayOfWeek().getValue();
        for (int i = 1; i < dayOfWeek; i++) {
            System.out.print("   ");
        }
        while (date.getMonthValue() == month) {
            System.out.printf("%2d ", date.getDayOfMonth());
            if (date.getDayOfWeek().getValue() == 7) {
                System.out.println();
            }
            date = date.plusDays(1);
        }
        if (date.getDayOfWeek().getValue() != 1) {
            System.out.println();
        }
        System.out.println();
    }
}

该方法接收一个表示年份的整数参数,并循环遍历1到12个月份,调用getMonthName方法获取月份名称并打印出来。接下来使用LocalDate类获取某年某月的第一天,并计算该日期为星期几。在输出前几天的空格后,循环输出该月的日期。每输出一个日期,判断是否是星期六,如果是则换行。当该月的日期输出完毕后,判断该月的最后一天是否是星期天,如果不是则换行。

  1. 获取某月的日历:
public static void printMonthCalendar(int year, int month) {
    System.out.println(getMonthName(month) + " " + year);
    System.out.println("Su Mo Tu We Th Fr Sa");
    LocalDate date = LocalDate.of(year, month, 1);
    int dayOfWeek = date.getDayOfWeek().getValue();
    for (int i = 1; i < dayOfWeek; i++) {
        System.out.print("   ");
    }
    while (date.getMonthValue() == month) {
        System.out.printf("%2d ", date.getDayOfMonth());
        if (date.getDayOfWeek().getValue() == 7) {
            System.out.println();
        }
        date = date.plusDays(1);
    }
    if (date.getDayOfWeek().getValue() != 1) {
        System.out.println();
    }
    System.out.println();
}

该方法接收一个整数的年份和月份参数,并使用类似于获取某年的日历的方法获取该月的日历。

下面是两个使用示例:

int year = getUserInput("请输入年份:");
printYearCalendar(year);

int year = getUserInput("请输入年份:");
int month = getUserInput("请输入月份:");
printMonthCalendar(year, month);

第一个示例将会打印出用户输入年份的12个月份的日历,第二个示例将会打印出用户输入的年份和月份的日历。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现日历(某年的日历,某月的日历)用户完全自定义 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java集合Stream流操作的基本使用教程分享

    Java集合Stream流操作的基本使用教程分享 什么是Java集合Stream流? Java集合Stream流是Java 8新增的一个处理集合数据的API。集合Stream流本质上是一个“管道”或者“流水线”,它可以通过一系列中间操作对数据进行处理。中间操作不会导致数据计算,只会记录操作,而最终的操作称为终端操作,会触发所有中间操作的计算并返回一个结果。 …

    Java 2023年5月26日
    00
  • JavaSpringBoot报错“ServerErrorException”的原因和处理方法

    原因 “ServerErrorException” 错误通常是以下原因引起的: 服务器配置问题:如果您的服务器配置存在问题,则可能会出现此错误。在这种情况下,需要检查您的服务器配置并确保它们正确。 服务器资源问题:如果您的服务器资源存在问题,则可能会出现此错误。在这种情况下,需要检查您的服务器资源并确保它们正确。 服务器代码问题:如果您的服务器代码存在问题,…

    Java 2023年5月4日
    00
  • Java数据库连接池连接Oracle过程详解

    Java数据库连接池连接Oracle过程详解 本文将详细讲解Java数据库连接池连接Oracle的过程,包括连接池的作用、如何配置连接池、连接池连接Oracle的步骤、注意事项等。 连接池的作用 连接池是为了提高系统性能和稳定性而设计的。在Java中,使用连接池可以避免频繁地打开和关闭数据库连接,从而节省系统资源。当一个请求需要访问数据库时,连接池会从连接池…

    Java 2023年6月16日
    00
  • Java BIO实现聊天程序

    下面我就为您详细讲解“Java BIO实现聊天程序”的完整攻略。首先,我们需要了解什么是BIO(Blocking IO)。 什么是BIO BIO是Java中IO的一种传统模型,它与操作系统提供的Input/Output是相似的。BIO的特点是同步并阻塞,即在执行输入输出过程中,如果没有数据读取,或者无法数据输出,那么将会阻塞在那里,直到有数据读取或输出。BI…

    Java 2023年5月23日
    00
  • Springboot mybatis常见配置问题解决

    下面是Springboot MyBatis常见配置问题解决的完整攻略。 问题一:MyBatis的Mapper不能正常映射数据库表 原因 由于 Mapper 文件和数据库表的对应关系没有处理好,MyBatis 执行时会找不到对应的表或列,导致不能正常映射。 解决方案 确认数据库配置是否正确,包括数据库名称、端口、用户名、密码等。 确认 Mapper 文件的命名…

    Java 2023年5月20日
    00
  • SpringBoot后端接口的实现(看这一篇就够了)

    “SpringBoot后端接口的实现(看这一篇就够了)”是一篇非常实用的文章,主要讲解了如何使用SpringBoot快速实现后端接口的开发。我将根据文章的内容为您提供一份完整攻略,帮助您理解和应用这篇文章。 1. 前置知识 在进行这个教程之前,您需要具备以下知识:- Java语言基础- SpringBoot框架基础- RESTful API的基本概念- Sp…

    Java 2023年5月15日
    00
  • java聊天室的实现代码

    下面我会为您详细讲解java聊天室的实现代码攻略。具体的实现过程分为以下几个步骤: 1. 创建服务器端 在服务器端,我们需要进行以下操作: 1.1 创建服务器套接字 服务器套接字是接受客户端连接的初始点。我们可以使用 ServerSocket 类来创建套接字,并指定服务器的监听端口号。 int portNumber = 1234; ServerSocket …

    Java 2023年5月19日
    00
  • Java网络编程之简单的服务端客户端应用实例

    下面是详细讲解“Java网络编程之简单的服务端客户端应用实例”的完整攻略。 简介 网络编程是指在计算机网络环境下,不同计算机之间利用程序进行数据交换。Java提供了一套完善的网络编程库,可以快速实现各种网络应用程序。本篇攻略将针对Java网络编程的服务端和客户端进行详细介绍,并通过示例演示其具体实现方法。 服务端 服务端是指在网络中提供服务的计算机程序,主要…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部