java控制台打印本月的日历

Java在控制台打印本月日历

在学习《Java核心技术卷I·基础知识》第10版 的时候里面有一个小例子,就是在控制台上打印日历的一个例子,就想自己试试。

代码如下:

import java.time.LocalDate;

public class TestScanner {

  public static void main(String[] args) {
    rili();
  }

  private static void rili() {

    System.out.println(" Mon Tue Web Thu Fri Sta Sun");
    //获取当前日期
    LocalDate now = LocalDate.now();
    //获取当前月份
    int nowMonth = now.getMonthValue();
    //获取今天是几号
    int nowDay = now.getDayOfMonth();
    //在外部设置一个月份的变量,用于与当前月份进行判断
    int dayOfMonth = nowMonth;
    //获取本月月初的日期
    now = now.minusDays(nowDay - 1);
    //获取月初是星期几
    int firstWeek = now.getDayOfWeek().getValue();
    String blank = "";
    for(int i = 0; i < firstWeek; i++) {
      blank += "  ";
    }
    //如果1号是星期一的话前面添加三个空格
    if(firstWeek != 1) {
      //截取最后一个空格用于存放日期,不然的话会错位
      blank = blank.substring(0, blank.length() - 1);
    } else {
      blank = "  ";
    }
    //打印日期
    System.out.print(blank + now.getDayOfMonth());
    //如果加1天之后的日期还是本月份的就一直打印
    while(dayOfMonth == nowMonth) {
      //加1天
      now = now.plusDays(1L);
      //获取加1天之后的月份
      dayOfMonth = now.getMonthValue();
      //如果加一天之后的月份不等于当前月份,就直接跳出循环
      if (dayOfMonth != nowMonth) {
        break;
      }
      //判断如果日期为双位数,就在前面添加两个空格,否则就添加三个空格
      if (now.getDayOfMonth() < 10) {
        //判断加一天之后的日期是否和今天相等,如果相等就在前面加个*
        if (now.getDayOfMonth() == nowDay) {
          System.out.print(" *" + now.getDayOfMonth());
        } else {
          System.out.print("  " + now.getDayOfMonth());
        }
      } else {
        if (now.getDayOfMonth() == nowDay) {
          System.out.print(" *" + now.getDayOfMonth());
        } else {
          System.out.print(" " + now.getDayOfMonth());
        }
      }
      //获取加一天之后的星期数
      int week = now.getDayOfWeek().getValue();
      //如果是星期日,就换行
      if (week == 7) {
        System.out.println();
      }
    }
  }

}

结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java利用Calendar类打印日历

    本文实例为大家分享了java利用Calendar类打印日历的具体代码,供大家参考,具体内容如下 import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("请输入日期(如2018-12-07):"); Scanner sc=new Sc

  • java打印指定年月份的日历

    本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下 做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环打印,对初学者来说应该好理解点 工具类: import java.util.Calendar; public class DaysTool { private int year; private int month; public DaysTool(){} public DaysTool(int year ,int month){ th

  • Java实现按年月打印日历功能【基于Calendar】

    本文实例讲述了Java实现按年月打印日历功能.分享给大家供大家参考,具体如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalendarBook { public static void main(String[] args) throws ParseException { C

  • java打印指定年月的日历

    本文实例为大家分享了Java打印指定年月日历的具体代码,供大家参考,具体内容如下 日历如下: 程序如下: //打印指定年月的日历 public class PrintCalendar { public static void main(String[] args) { int year=2013; int month=12; printMonth(year,month); } private static void printMonth(int year, int month) {//打印日历

  • java控制台打印本月的日历

    Java在控制台打印本月日历 在学习<Java核心技术卷I·基础知识>第10版 的时候里面有一个小例子,就是在控制台上打印日历的一个例子,就想自己试试. 代码如下: import java.time.LocalDate; public class TestScanner { public static void main(String[] args) { rili(); } private static void rili() { System.out.println(" Mon T

  • java实现打印日历

    本文实例为大家分享了java实现打印日历的具体代码,供大家参考,具体内容如下 效果图 代码: /** *需要实现的目标:根据输入的年月打印出本月的日历表 *说明:1900年1月1日刚好是星期一,所以需要计算出从1900 年到当前年月的前一个月总 *共经历了几天,然后根据每周七天,用总天数除以7取余数,此余数就是上个月所占到星 *期几,也就是每月开头有的空格数,然后打印此空格数,在打印此空格数后再依次打印本 *月的各天数. **/ //引入Scanner类,用于从控制台输入年月 import ja

  • Mybatis控制台打印Sql语句的实现代码

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 下面看下Mybatis控制台打印Sql语句 1.首先将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语

  • mybatis-plus配置控制台打印完整带参数SQL语句的实现

    问题背景 通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率.因此我们需要输出完整的SQL语句以便调试. update 2020-July : 新增官方p6spy打印分析sql语句方案 解决方案(StdOutImpl) 请注意: 部分朋友反馈不生效,估计跟引入的包有一定关系,druid+mybatis-plus-boot-starter 就亲测有用.请检查是否有log4j相关实现类. 如果是applicati

  • springboot+mybatis配置控制台打印sql日志的方法

    此处项目环境为简单的springboot+mybatis环境.可查看到上一篇文章搭建的简单springboot+mybatis的项目 想要控制台打印sql日志. 只需要在resources目录下添加logback.xml文件即可 logback内容如下.直接复制即可 <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日

  • java控制台版实现五子棋游戏

    控制台实现五子棋游戏,供大家参考,具体内容如下 控制台打印棋盘 编写两人对弈的五子棋游戏,游戏规则:黑白双方有一方首先实现五子连续,则获胜,游戏结束. 代码: import java.util.Scanner; public class Wuziqi { //自定义二维数组来描述棋盘,默认初始值为0 int[][] chessBoard = new int[16][16]; //自定义成员方法来绘制棋盘 void paint(){ //1.先绘制棋盘中第一行的坐标信息,也就是列坐标信息 for

  • Mybatis控制台打印SQL语句的两种方式实现

    问题描述 在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们.但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql就会非常的难,这个时候经常会需要把组合之后的完整sql调试出来比较好.下面来看两种调试出sql的两种方式 解决方案 方案1: 网上说的比较多的,之前也是这么用的一种方式 1:首先将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句 2:添加如下语句: ###

  • java控制台实现拼图游戏

    本文实例为大家分享了java控制台实现拼图游戏的具体代码,供大家参考,具体内容如下 1.首先对原始的拼图进行多次无规律的移动,将拼图打乱 2.然后进行游戏,在游戏移动同时对拼图顺序进行判断 ①如果拼图成功,则跳出循环,结束游戏: ②如果拼图失败,陷入死循环,继续移动拼图,直至拼图成功为止. import java.util.Random; import java.util.Scanner; public class GrameOfPingTuTest{ private static Scanne

  • java日志打印的完全使用指南

    目录 一.简介 二.常用日志框架 三.日志级别 四.logback简单介绍 五.常见问题 总结 一.简介 日志打印是java代码开发中不可缺少的重要一步. 日志可以排查问题,可以搜集数据 二.常用日志框架 比较常用的日志框架就是logback, 一些老项目会使用log4j,他们用的都是slf4j-api统一接口. (1) 使用log4j log4j使用: 1. slf4j-api-1.5.11.jar 2. slf4j-log4j12-1.5.11.jar 3. log4j-1.2.15.jar

  • Java利用LocalDate类实现日历设计

    目录 前言 语法 日历实战 步骤分解 完整代码 结论 LocalDate API 前言 在我们完成这个日历设计前,需要了解Java中的预定义类LocalDate的一些用法 语法 LocalDate.now() // 2022-07-01 会构造一个新对象,表示构造这个对象时的日期. LocalDate.of(1999, 1, 1) 可以提供年.月和日来构造对应一个特定日期的对象: 当然,通常我们都希望将构造的对象保存在一个对象变量中: LocalDate newYearsEve = LocalD

随机推荐