编写一个程序,显示给定年月的日历。程序提示用户输入年份和月份,然后显示该月的整个日历。

  代码:

 import java.util.Scanner;
public class PrintCalendar{
public static void main(String[] args){
Scanner input=new Scanner(System.in); System.out.print("Enter full year(e.g.,2011): ");
int Year=input.nextInt(); System.out.print("Enter month as a number between 1 and 12: ");
int Month=input.nextInt(); // int year=inputYear();
//int month=inputMonth();
printMonth(Year, Month);
}
/*
public static int inputYear(){
boolean flag=true;
Scanner input=new Scanner(System.in);
while(flag){
System.out.print("Enter full year(e.g.,2011): ");
int iYear=input.nextInt();
if(iYear>=1800){
flag = false;
}
}
return iYear;
} public static int inputMonth(){
boolean flag=true;
Scanner input=new Scanner(System.in);
while(flag){
System.out.print("Enter month as a number between 1 and 12: ");
int iMonth=input.nextInt();
if(iMonth>=1 && iMonth<=12){
flag = false;
}
}
return iMonth;
}*/ public static void printMonth(int year, int month){
printMonthTitle(year, month);
printMonthBody(year,month);
} public static void printMonthTitle(int year, int month){
System.out.println("\t" + getMonthName(month)+"\t" +year);
System.out.println("-----------------------------------");
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
}
public static String getMonthName(int month){
String monthName="";
switch (month){
case 1: monthName="January"; break;
case 2: monthName="February"; break;
case 3: monthName="March"; break;
case 4: monthName="April"; break;
case 5: monthName="May"; break;
case 6: monthName="June"; break;
case 7: monthName="July"; break;
case 8: monthName="August"; break;
case 9: monthName="September"; break;
case 10: monthName="October"; break;
case 11: monthName="November"; break;
case 12: monthName="December"; break;
} return monthName;
} public static void printMonthBody(int year, int month){ //Get start day of the week for the first date int the month
int startDay=getStartDay(year,month); //Get number of days in the month
int numberOfDaysInMonth = getNumberOfDaysInMonth(year,month); //Pad space before the first day of the month
int i=0;
for(i=1; i< startDay; i++){
System.out.print(" ");
}
for(i=1; i<=numberOfDaysInMonth;i++){
System.out.printf("%-4d", i); if((i+startDay-1)%7==0)
System.out.println();
}
System.out.println();
} /** Get the start day of month/1/year */
public static int getStartDay(int year, int month){
final int START_DAY_FOR_JAN_1_1800 = 3; //Get the total number of days from 1/1/1800 to month/1/year
int totalNumberOfDays= getTotalNumberOfDays(year,month); //Return the start day for month/1/year
return (totalNumberOfDays+START_DAY_FOR_JAN_1_1800)%7;
} /** Get the total number of days from January 1, 1800; */
public static int getTotalNumberOfDays(int year, int month){
int total = 0; //get total number of days from 1800 to 1/1/year
for(int i = 1800; i<year; i++){
if(isLeapYear(i))
total = total + 366;
else
total = total + 365;
} //add days from January to the month prior to the calendar month
for(int i = 0; i<month;i++)
total +=getNumberOfDaysInMonth(year, i); return total;
} /** Get the number of days in a month */
public static int getNumberOfDaysInMonth(int year, int month){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 31;
if(month==4||month==6||month==9||month==11)
return 30;
if(month==2)
return isLeapYear(year)?29:28;
return 0;
} /** Determine if it is a leap year */
public static boolean isLeapYear(int year){
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
}

执行效果:

Java实现打印日历的功能的更多相关文章

  1. 使用java 打印日历

    package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...

  2. Atitit.java swing打印功能 api  attilax总结

    Atitit.java swing打印功能 api  attilax总结 1. 打印方式有三种:2 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.2 ...

  3. Java实现打印功能-AWT Graphics2D

    Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Gra ...

  4. Oracle打印日历功能

    Oracle用SQL打印日历 1.1  打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D,  ...

  5. Java实现打印功能

    用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用Graphics2D直接输出直 ...

  6. 【java】java自带的java.util.logging.Logger日志功能

    偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...

  7. 常用Java API之Scanner:功能与使用方法

    Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...

  8. Java如何打印日志

    以下为<正确的打日志姿势>学习笔记. 什么时候打日志 1.程序出现问题,只能通过 debug 功能来定位问题,很大程度是日志没打好.良好的系统,通过日志就能进行问题定位. 2.if-els ...

  9. Python学习实践-----打印日历

    使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...

随机推荐

  1. 无界鼠标 Mouse Without Borders

    最近遇到一个不爽的事,单位的办公电脑,配置低,自带笔记本电脑,屏幕小. 在给自己的笔记本电脑外接了22寸显示器以后,屏幕是舒服了很多,而且外接了微软的人机工学键鼠套装,加上自己的伪人机工学椅,舒适性确 ...

  2. elasticsearch kabana中创建索引

    在kabana中创建索引和索引类型语法 PUT clockin{ "mappings": { "time": { } }} 查询索引下的所有数据 GET clo ...

  3. UnityShader实现物体被遮挡描边

    之前在网上看到物体遮挡描边的功能,自己也拿来实现了一番.算作第一篇博客的开篇. 先贴出几张效果图,也是个人思路和方案的改进路线吧. ////////////////////////////////// ...

  4. 精进之路之CAS

    CAS (Compare And Swap) 即比较交换, 是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术,本文将深入的介绍CAS的原理. 其算法核心思想如下 执行函数: ...

  5. redis cluster最简配置

    redis cluster最简配置 master配置如下:(默认6379端口) bind 127.0.0.1 port 6379 timeout 0 databases 16 Master的redis ...

  6. redis初始化服务器

    从启动 Redis 服务器, 到服务器可以接受外来客户端的网络连接这段时间, Redis 需要执行一系列初始化操作. 整个初始化过程可以分为以下六个步骤: 初始化服务器全局状态. 载入配置文件. 创建 ...

  7. GitHub网站使用的基础入门

    github基本入门,首先需要掌握一些ssh非对称加密的知识和一些基本的git命令操作.下面是我推荐的两个比较好的网站,然后我再专门对GitHub网站使用进行步骤讲解. git 命令:http://b ...

  8. less &进行选择判断css的样式

    先说&在less写 .parent{ .child{} &.and{} }在css就是 .parent.child{}//父子关系 .parent.and{}//并关系 用到这个方法是 ...

  9. ssh外网穿透

    不同局域网ubuntu如何进行ssh穿透登录不同局域网ubuntu如何进行ssh穿透登录前言一. 建议安装teamview二. openssh服务三. 打开路由器端口映射四.连接@(ubuntu) 前 ...

  10. Python之必备函数

    1. lambda 表达式 匿名函数(ANONYMOUS FUNCTION)是指一类无需定义标识符(函数名)的函数.通俗来讲,就是它可以让我们的函数,可以不需要函数名. 正常情况下,我们定义一个函数, ...