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实现时间与字符串之间转换

    下面是详细的讲解: 1. Java中时间字符串的格式化 Java中有一个比较强大的时间格式化类——SimpleDateFormat。使用它可以很方便地将时间字符串按照指定的格式进行格式化,也可以将时间转换为指定格式的字符串。 使用SimpleDateFormat时,需要先定义好时间字符串的格式。常用的格式符有: 格式符 说明 yyyy 年份,如:2019 M…

    Java 2023年5月20日
    00
  • Spring Boot实现简单的增删改查

    下面是SpringBoot实现简单的增删改查的完整攻略。 1. 环境准备 在开始之前,需要找到一台安装了JDK1.8以上版本的电脑,并确保你已经熟练掌握了Java语言以及Spring Boot框架的基础知识。 首先,需要安装开发工具IDEA和Maven。 在IDEA官网下载并安装IntelliJ IDEA Community版本:https://www.je…

    Java 2023年5月15日
    00
  • SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示

    首先对于这个攻略的标题,我们可以进行分析理解。 “SSH框架网上商城项目”:这个部分是指网上商城项目所使用的技术框架或开发方式,其中SSH框架通常指的是Spring + Struts2 + Hibernate。 “第16战”:这个部分是指在整个项目中,这是第16个完成的模块或任务。 “Hibernate二级缓存处理”:这个部分是指在这个模块中,我们要讲解的是…

    Java 2023年5月20日
    00
  • Java实现字符串倒序输出的常用方法小结

    下面是Java实现字符串倒序输出的常用方法小结的完整攻略。 1. StringBuilder的reverse()方法 StringBuilder是Java中常用的一个字符串操作类,它提供了一个方便的reverse()方法,用于将字符串倒序输出。 示例代码如下: public static String reverseString(String str) { …

    Java 2023年5月26日
    00
  • Java中的Semaphore如何使用

    使用 Semaphore 可以控制同时访问资源的线程个数,在 Java 中,Semaphore 是一个计数信号量。 Semaphore 可以用来限制某个资源的访问线程个数,它的构造函数接收一个整型变量 n,表示同一时刻最多允许 n 个线程访问该资源。当一个线程进入该资源进行访问时,计数器会减去 1,其他线程再访问时就会被阻塞,直到该线程释放资源时计数器加 1…

    Java 2023年5月26日
    00
  • 解决javaWEB中前后台中文乱码问题的3种方法

    下面是详细讲解“解决JavaWeb中前后台中文乱码问题的3种方法”的完整攻略,包括三种方法的步骤和示例代码。 一、问题描述 在JavaWeb开发中,我们有时候会遇到前后台交互时出现中文乱码的问题,这给用户带来不好的体验,同时也会影响数据的正确性。下面我们讲解三种解决JavaWeb中前后台中文乱码问题的方法。以下示例中,假设我们需要接收中文参数,并将其返回给前…

    Java 2023年5月20日
    00
  • SpringMVC中ModelAndView的使用及说明

    SpringMVC中ModelAndView的使用及说明 在SpringMVC中,ModelAndView是一个非常重要的类,用于表示模型和视图的组合。本文将详细讲解SpringMVC中ModelAndView的使用及说明,包括如何创建ModelAndView对象、如何设置模型数据、如何设置视图名称、如何使用重定向和转发等。 创建ModelAndView对象…

    Java 2023年5月18日
    00
  • SpringBoot统一功能处理实现的全过程

    下面我将详细讲解“SpringBoot统一功能处理实现的全过程”的完整攻略: 1. 了解统一功能处理的概念 统一功能处理是指对于某些常见或重复的操作,我们可以把它们进行封装,并能够在整个应用中统一调用。例如,对于每个请求的日志打印、异常处理、权限控制等,我们可以将它们进行封装,这样可以提高代码的复用性、可维护性和易读性。 2. 选择合适的工具 在Spring…

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