java控制台打印本月的日历
作者:水果623 发布时间:2023-10-15 22:58:12
标签: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();
}
}
}
}
结果
来源:https://blog.csdn.net/u011389297/article/details/84987687
0
投稿
猜你喜欢
- Java中List.of()和Arrays.asList()的区别及原因动手写一下,让自己更有印象1.Arrays.asList()可以插入
- 几个月前写过一篇博客《xUtils3.0框架学习笔记》 ,上面也有记录通过xUtils实现文件上传的使用方法,代码如下:private vo
- 示例 1 :使用搜索表单创建全屏模式我们要构建的小应用程序有一个应用程序栏,右侧有一个搜索按钮。按下此按钮时,将出现一个全屏模式对话框。它不
- 基本概念:类加载的过程大致分为三个阶段1、加载阶段:本阶段主要把class的二进制代码加载进入JVM,并且进行常量池(类名,方法名,字段名)
- 最近在配置OpenCV的时候,由于使用的是VS2019,结果找不到Microsoft.Cpp.X64.user这个文件。导致每次新建项目都得
- 本文实例讲述了java实现的简单猜数字游戏代码。分享给大家供大家参考。具体代码如下:import java.util.InputMismat
- 介绍超级管理员:系统管理、用户管理、网点管理、运输点管理、快递员管理、网点申请管理(审核)、报价管理(时效报价)等。普通用户:注册登录、个人
- PreparedStatement介绍可以通过调用 Connection 对象的 prepareStatement(String sql)
- 前言在原生的 Android 或 iOS 中,都提供了基本的键值对存储方式,Android 是 SharedPreferences,iOS
- 前言这里主要简单介绍如何使用Camera+SurfaceView自定义相机拍照,如果是Camera2或者是TextureView的可以前往主
- 1. matlab的lp2lp函数的作用去归一化 H(s) 的分母2. matlab的lp2lp函数的使用方法[z, p, k]=butta
- springboot嵌套子类使用在实际项目里,我们会使用到一个User用户含有子类Address、这种嵌套子类在开发中会遇到很多问题,现在主
- 我们都知道mybatis在进行参数判断的时候,直接可以用<if test=""></if> 就可
- 当我们在做前后端分离的开发时,在使用fetch交换数据的时候,提示Access-Control-Allow-Origin跨域问题,解决方案跟
- 需求是需要在TextView前端加入一个标签展示。最终效果图如下:根据效果图,很容易就能想到使用SpannableStringBuilder
- 一、实现方式@ConfigurationProperties 注解(最好加上前缀prefix=“person”,标明是和配置文件中哪个开头的
- 最近在做上传文件的服务,简单看了网上的教程。结合实践共享出代码。由于网上的大多数没有服务端的代码,这可不行呀,没服务端怎么调试呢。Ok,先上
- 一、导言1.1 介绍桥接模式及其应用背景桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以
- 6.0的手机对于写入手机需要申请权限的我做了如下处理下面我贴出代码package com.example.admin.sdapplicati
- 序言小编在项目中有遇到使用 flutter 实现扫码枪接入的需求。为方便使用,小编把能力封装成 package 并发布。好记性不如烂笔头,下