java实现打印日历

本文实例为大家分享了java实现打印日历的具体代码,供大家参考,具体内容如下

效果图

代码:

/**
*需要实现的目标:根据输入的年月打印出本月的日历表
*说明:1900年1月1日刚好是星期一,所以需要计算出从1900 年到当前年月的前一个月总
*共经历了几天,然后根据每周七天,用总天数除以7取余数,此余数就是上个月所占到星
*期几,也就是每月开头有的空格数,然后打印此空格数,在打印此空格数后再依次打印本
*月的各天数。
**/
//引入Scanner类,用于从控制台输入年月
import java.util.Scanner;
//程序开始
class Rili{
 //主方法,程序执行的入口
 public static void main(String[] args){

 inputYearAndMonth();
 }
 /**
 *此方法用于从控制台输入年、月
 **/
 public static void inputYearAndMonth(){

 Scanner sc = new Scanner(System.in);
 System.out.println("请输入年");
 int year = sc.nextInt();
 System.out.println("请输入月");
 int month = sc.nextInt();

 printRiLi(year , month);

 }

 /**
 * 打印日历
 **/
 public static void printRiLi(int year,int month){
 //一周七天,定义一个计数器,打印一天加1(包括空白)如果%7等于0的话就需要换行
 int count = 0;
 System.out.println("\t---下面打印的是:"+year+"年"+month+"月的日历表---");
 System.out.println();
 System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
 for(int i = 1;i <= getSpace(year,month);i++){

 System.out.print("\t");
 count +=1;
 }
 for(int i = 1;i <= getDaysOfMonth(year ,month);i++){

 System.out.print(i+"\t");
 count +=1;
 if(count % 7 ==0){
 System.out.println();
 }
 }

 }

 /**
 *判断年份是平年还是闰年(用于判断一年有365天或366天,并用于判断2月有28天或29天),返回值是true(29天、366天)和flase(28天、365天)
 **/
 public static boolean isLoopYear(int year){

 return (year %4 ==0 && year % 100 !=0) || (year % 400 == 0);
 }

 /**
 * 获得某月的天数
 **/
 public static int getDaysOfMonth(int year ,int month){

 int days = 0;
 switch(month){
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:
 days = 31;
 break;
 case 4:
 case 6:
 case 9:
 case 11:
 days = 30;
 break;
 case 2:
 days = isLoopYear(year)? 29:28;
 break;
 }
 return days;
 }

 /**
 * 获得自1900年至当前年、月经过的总天数
 * 实现:1900年到year - 1 年的总天数
 * 当年至month - 1 的总在数
 * 两个天数之和相加
 **/
 public static int getTotalDays(int year , int month){
 int daysofyear = 0;
 int daysofmonth = 0;
 for(int i = 1900;i < year;i++){

 daysofyear += isLoopYear(i)? 366:365;
 }
 for(int i = 1; i < month; i++){

 daysofmonth += getDaysOfMonth(year,i);
 }
 return daysofyear+daysofmonth;
 }

 /**
 * 利用总天数模7取余,得到所需要打印的空格数
 **/
 public static int getSpace(int year,int month){

 int allSpace = getTotalDays(year,month) % 7;
 return allSpace;
 }
}

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

时间: 2021-01-25

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实现按年月打印日历功能【基于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日历 用到的知识:Java GUI编程,日期操作 开发环境:win8+eclipse+jdk1.8 功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间. 效果图: 源代码: CalendarFrame.java import java.awt.BorderLayout; import java.awt.GridLayout; import

asp.net基于Calendar实现blog日历功能示例

本文实例讲述了asp.net基于Calendar实现blog日历功能.分享给大家供大家参考,具体如下: 怎样用.net的Calendar控件来实现blog中站点日历的效果呢,我们知道站点日历最重要的功能就是,显现在哪天blog主人写了日志,点击日期,你将进入所选日期的日志列表, 首先,我们知道.net中的服务器控件是会进行Postback的,Calendar控件中的第一天在点击时,就会进行一次postback我们要做的就是改变它默认的链接,使它不触发postback事件,其次,就是要知道哪一天有

基于ThinkPHP实现的日历功能实例详解

本文实例讲述了基于ThinkPHP实现的日历功能.分享给大家供大家参考,具体如下: 开发环境介绍 最新,闲来没事,便开发了一款简单的日历,来统计工作情况.为了开发便捷,使用ThinkPHP架构.界面如下图 备注:每页包含上一个月,当前月,下一个月的日期,并用不同的颜色区分,如果某天工作了,便圈出来. 主要是以下两个文件 重要文件描述 功能文件 CalenDar.class.php主要负责,获取日历详细信息的,不涉及用户数据操作. 代码如下: <?php namespace Util; class

Java利用Phantomjs实现生成图片的功能

今天,给大家分享一个Java后端利用Phantomjs实现生成图片的功能,同学们使用的时候,可以参考下! PhantomJS简介 首先,什么是PhantomJS? 根据官网介绍: PhantomJS is a command-line tool. -- 其实就是一个命令行工具. PhantomJS的下载地址: Windows:phantomjs-2.1.1-windows.zip Linux:phantomjs-2.1.1-linux-x86_64.tar.bz2;phantomjs-2.1.1

Java实现的AES256加密解密功能示例

本文实例讲述了Java实现的AES256加密解密功能.分享给大家供大家参考,具体如下: 一.代码 package com.handler; import java.io.UnsupportedEncodingException; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.cry

Android使用GridView实现日历功能示例(详细代码)

Android使用GridView实现日历功能示例,代码有点多,发个图先: 如果懒得往下看的,可以直接下载源码吧,最近一直有人要,由于时间太久了,懒得找出来整理,今天又看到有人要,正好没事就整理了一下 源码下载.... 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an

Java正则环视和反向引用功能与用法详解

本文实例讲述了Java正则环视和反向引用功能与用法.分享给大家供大家参考,具体如下: 环视 1.环视概念 环视,又称为零宽断言,简称断言. 环视强调位置(前面或后面),必须匹配环视表达式,才能匹配成功. 环视可认为是虚拟加入到它所在位置的附加判断条件,并不消耗正则的匹配字符. 2.环视基础表达式 (?=Expression) 顺序肯定环视,表示所在位置右侧能够匹配Expression (?!Expression) 顺序否定环视,表示所在位置右侧不能匹配Expression (?<=Express